haskell-jp / random #87

Kazunari Shibata
@Kazunari Shibata has joined the channel
https://github.com/rampaging-fridge/yojijukugo/blob/f0939d02a5b173074e52a5a70d62d9887faa2721/src/Logic.hs#L83 Traversalが与えられたとき、その影響範囲をシャッフルする(要するにどんな構造でもシャッフルできる)関数を作りました。ネストしたデータ構造に触れられるところが便利でした
Haskellで型クラス実装されてなくても動くような、いわゆるSoft Constraintsの言語拡張って難しいんでしょうか?
(!) :: (Show? key, Ord key) => Map key value -> key -> value
(!) m key = case lookup key m of
  Just value -> value
  Nothing -> case show? of
    Nothing -> error $ "no value for key"
    Just fshow -> error $ "no value for key: "++ fshow key

>>> empty ! "hoge"
Error: no value for key: "hoge"
>>> newtype T = T Int deriving(Eq,Ord)
>>> empty ! (T 10)
Error: no value for key
... Replies ...
あったら便利そうですね。力技ですが https://github.com/mikeizbicki/ifcxt こういうのはあります
ifcxt面白いですね。IfCxtのインスタンスをGHCが自動生成するようにするのが筋が良さそうな気がしますね。
こういうのちょくちょく欲しくなりますね
@yukiyama has joined the channel
HLS って、GHCのバージョン毎に別のバイナリが必要なのか
うーん、めんどいな
っと思ったけどこれマージされてるな https://github.com/haskell/vscode-haskell/pull/236
... Replies ...
あ、これ VSCode か
wrapperを入れたら自動で必要に応じて本体を入れてくれればいいのにね。 :disappointed_relieved:
超:wakaru:
まぁそのうち実装されるんじゃないですかね
標準でhaskell-language-server-wrapperというプログラムがあって各バージョンごとのバイナリを適宜呼び出してくれます。
えぇ、GHCのバージョン毎に呼び分けしてくれるところまではいいのですが、対象のGHCがインストールされてなかったときにインストールするところまではしてくれないので...
なるほど。確かに今はghcupからhlsとghcをインストールするようになってて、hlsから自動的にghcをインストールするようにはなってませんね。
ああー、すみません、言い間違えました。「対象のGHC向けのhls」です。
hlsでしたら ghcup install hls でバイナリが提供されているバージョンの詰め合わせがダウンロードされると思います。Windowsでは試したことがないのでもしかしたらLinux/macOSだけかもしれませんが。
ekmettさんのアカウントが乗っ取られてvzlishというIDに変えられたらしい
(直接Haskellと関係なくてすみません) https://twitter.com/kmett/status/1361607573237944321?s=20
https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4743 NoFieldSelectorsの実装がマージされました!
@ has joined the channel
@はるピヨ has joined the channel
ふと ghci bot があると楽しそうと思った
例年開催している Haskell Day ですが、開催できなかった去年の分をオンラインで開催しようと計画しています。
初のオンラインイベントですので、いろいろと決めることがあり、まずは「何を決めないといけないか」の洗い出しをしています。
よろしければレビューをお願いします。
すごいH本を前に途中まで読んだだけで、最近あまりHaskell出来ていないのですが気になります:eyes:
PyCon JP関連で昨年からスタッフ活動をしているので、イベント系に興味ありです
PyCon JPは2011年初回カンファレンス、2013年にAPAC開催&一般社団法人立ち上げというのをやっています。中の人と繋がりあるので知見の共有とかできるかも....
@ has joined the channel
GHC の User Guide、9.0.1 から結構ページが変わってる
https://downloads.haskell.org/ghc/8.10.4/docs/html/users_guide
https://downloads.haskell.org/ghc/9.0.1/docs/html/users_guide
latest ってなってたリンクが軒並み死んだ(ちゃんとバージョンを指定しておこうな)
... Replies ...
軒並みは言いすぎた、言語拡張のリンクだけ?変わってしまったみたいだ
英語だけど、どこまで評価されてどこまでサンクなのかが可視化されて、おもしろい
https://youtu.be/UPy7TXgrK1A
haskell.org から見られるドキュメントに不足している内容を募集、ってことかな?
https://discourse.haskell.org/t/rfc-documentation-overhaul-on-haskell-org/1942
うぉー、今日会社PCのhaskell-language-serverを0.9.0に更新したばっかりだったのに1.0.0が出てたのか!
https://github.com/haskell/haskell-language-server/releases/tag/1.0.0
Hiromi ISHII / mr_konn
まだ Pre-release の段階で、バイナリはこれから 8.8.4 の Windows バイナリが用意できてからリリースになります
待望のfind referencesが実装されて最高です。これでrust-analyzerみたいに依存・標準ライブラリも含めてfind definitionが動くようになれば言うことないのですが、HLS側だけでなんとかなる問題ではないと思うので難しそう。
あとLinuxで公式バイナリを使っていてTHを使ったプロジェクトをビルドすると https://github.com/haskell/haskell-language-server/issues/429 に遭遇したりすることがあります。glibcを静的リンクしていることが問題のようなので、HLSを自分でビルドすると直ります。
HLSって、(stackじゃなく)cabalで管理されているプロジェクトでもうまく動きますか? (stack はまったくインストールしてない環境)
大丈夫だと思いますよ。
動きますが、環境によっては https://github.com/mpickering/hie-bios/issues/194 のような問題があります。
https://github.com/haskell/cabal/pull/6241 がmergeされるといいのですが
ghcupを使っていれば ghcup set ghc $VERSION で常にプロジェクトが期待するGHCをactiveにしておけば問題なく動くと思います。別バージョンを使う複数のプロジェクトを同時に扱う場合は面倒になってしまいます。
@maoe ありがとうございます!
Hiromi ISHII / mr_konn
HLS 1.0.0 が正式リリースされました。Windows 上での 8.8 向けのバイナリの準備が不安定でその分だけ欠けていますが、他の環境 or GHC Version 向けであればもう使える筈です。
https://github.com/haskell/haskell-language-server/releases/tag/1.0.0
Hiromi ISHII / mr_konn
今回の目玉は、

• maoe さんも言及している find reference (グローバルな関数・型以外にもローカル変数の呼び出しとかも一覧出来てすごく便利です)
• より校則なロード時間(この二つは hiedb の機能によるものです)
• 8.10.4 バイナリの配付
• 強化された Tactics Plugin(lambda 式や case だけでなく関数定義の split もできるように/η reduction なども可能)
• ambiguous import や shadowing の解決機能
• Eval Plugin のコメントパーザがまともになった
• Eval Plugin の :set で 言語拡張以外にも GHC flags が指定可能に
• HLint の quick fix がビルド済バイナリでも動くように
あたりでしょうか
Hiromi ISHII / mr_konn
あ、あと hiedb のおかげでビルドシステムに stack を使っていてもローカルパッケージ間のジャンプが出来るようになりました
https://ja.wikipedia.org/wiki/ノート:関数型言語#改善に向けて で Wikipedia の記事を改善しようとしているので、「関数型プログラミング」についての Wikipedia における「信頼できる情報源」であるようなものを元とした情報が欲しいです……