haskell-jp / random #2

GHC 8.4 はこんな感じ:
DependentHaskell は入らないみたい。
hadrian は入る。
GHCが Haskell コードをコンパイルする速度が上がるみたいだけど、どれくらい速くなるのかなぁ。
『本物のプログラマは Haskell を使う』今の情報に更新して本の形にまとまってほしい
http://itpro.nikkeibp.co.jp/article/COLUMN/20060915/248215/
著者が音信不通で、みんな心配しています。
あら、そうなのですね
GHC 7.6 以降、Data.ByteString が IsString のインスタンスを export していたのか!
知らなかった。。。
import Data.ByteString.Char8() しまくりだった。
Data.MonoidやControl.Applicativeのimport関係で、GHCのバージョンによって警告が出たり出なかったりする問題ですが、この度 #ifdef を使わない画期的な解決方法が発見されました。
こんなモジュールを作成し、必要なら import すれば OK です。
魔法のようです。素晴らしいです。
hlint がまた強力になっていて、昔出さなかった suggestion を出すようになっています。
unsafePerformIO を NOINLINE してないことも指摘されました。
x == Nothing も isNothing を使えと言われるんですが、== だと辞書渡しになるから遅いんですかね?
少なくとも前者はxが Eq a => Maybe a でないといけないので後者の方が汎用的なコードではありますね(パフォーマンスのことは知りません)
bytestring-0.9.0.4からみたいですね。ByteString型はData.ByteStringとData.ByteString.Char8で同じで、かつインスタンスはモジュールではなく型に紐付く物なので、 import Data.ByteString.Char8 () は不要ではないかと思いました。
これAMPが実装されたときによく見た物だと思います。たいていの場合 import Prelude を最後に置くとCPPなしで警告を避けられます。
参考: https://ghc.haskell.org/trac/ghc/wiki/Migration/7.10#GHCsaysTheimportof...isredundant
Coreを見ると少なくとも8.2.1では同じコードにコンパイルされるようです。unfoldingは少し違いますが。
isNothing                                                          
  = \ (@ a_a217) (ds_d21I :: Maybe a_a217) ->
      case ds_d21I of {
        Nothing -> GHC.Types.True;                         
        Just ipv_s21X -> GHC.Types.False
      }
               
isNothing'     
  = \ (@ a_a210) _ [Occ=Dead] (x_a1TR :: Maybe a_a210) ->
      case x_a1TR of {                                        
        Nothing -> GHC.Types.True;                                  
        Just a1_a22b -> GHC.Types.False                      
      }

isNothingがパターンマッチ、isNothing'が(==)です。
@karako has joined the channel
投稿することが出来るようになりました。TravisCIのcron機能を使って実行し続ければOKだと思います。
https://github.com/Hexirp/github-trends
気になっていることは連携できるサービスの数の制限を回避するために古いタイプのトークンを使っていること、そのトークンは自分で取得するか代表者に取得してもらうかどっちがいいのか、どのチャンネルに投稿するようにしたらいいのか、このリポジトリは公式ユーザー https://github.com/haskell-jp に送るべきか、といったことです。
了解です。ちょっと詳細観て検討しますね。
@hexirp
(1) 差し支えなければ @hexirp に取得・設定までお任せしたいのですが、何か懸念点はありますか?
(2) チャンネルは適当に作ってしまってください。作った後のアナウンスも general にやっていただけると助かります。
(3) 差し支えなければ https://github.com/haskell-jp をownerにさせていただきたいです。
Stackage NightlyへのGHC 8.2.2の導入も順調なようですね!
https://github.com/fpco/stackage/issues/3037
:sweat: .oO(LTSにはいつ入るのか...)
通常通りであれば約半年に1回のペースで LTS のメジャーバージョンがアップデートされるので12月か1月ぐらいですかね?:thinking_face:
Haskellコードのcyclomatic complexityを測るツールとして、Argonとかhomplexityがあるみたいなんですが、使っている人がいたら、使い物になるか教えてください。
あれ、LinearTypesもまだですね..
両方とも保守されてない感じだ。。。
@lotz さんの Servant 入門記事と @matsubara0507 さんの Elm との連携記事を読んだから土日やっていくぞ
https://qiita.com/lotz/items/883b41fa79f060e59efa
https://matsubara0507.github.io/posts/2017-09-17-create-haskell-and-elm.html
拡張可能レコードは別の機会に
@ has joined the channel
1&2>そうします。
3>実行時に使うslackのトークンはTravisCIの機能で暗号化しないといけないのですが、暗号化したものは暗号化した人のリポジトリでしか復号できない仕様になっています。そのため私がslackのトークンを設定/暗号化するのであれば譲渡はできないかと思います。あと、今使っている古いタイプのトークンはできる範囲が多すぎるため余り他人に渡したくないというのもあります。もしこれらを解決する良い方法が見つかったらその時でも譲渡は可能だと思いますので、とりあえず今は実際に動かしてみます。
了解です。ではリポジトリーのownerは hexirp さんのままでよろしくお願いします。
ほかに必要なことがあればなんなりといってください!
@ has joined the channel
@oganao has joined the channel
hlint をはじめて使ってみましたが、 foldr (+) 0sum にしろとか、 map (...) $ map (...) は1個のmapにまとめろとか、なかなかアグレッシブな?指摘をしてくれますね
hlint --ignore="Eta reduce" とかで、ルールを排除できますよ。
警告の前の文字列をコピペするだけです。
実際、警告に従って運算していったらEta reduceで引数なくせるだろ、と言われて微妙な気分になりました^^;
@ has joined the channel
@Tomohiro has joined the channel
@jabara has joined the channel
Haskell Advent Calendar 始まりましたね :tada:
アドベントカレンダーのRSSを購読する #advent-calendar チャネル作っちゃってもいいですか?
https://qiita.com/advent-calendar/2017/haskell
https://qiita.com/advent-calendar/2017/haskell2
https://qiita.com/advent-calendar/2017/haskell3
@lotz Nice idea! やっちゃってください! :pray:
ありがとうございます!さっそく advent-calendar 作りました〜