haskell-jp / random #73

ghcideだとある程度補完も動くので(ある程度止まりですが…)やはりまだhlsじゃなくてghcideを使うべきなようですね
情報ありがとうございます
@yutakatay has joined the channel
ghcidは mkMessage で作ったメッセージをなかなか参照してくれなくてつらいということもわかってきました…
プロダクション用などでハードに使う観点からは物足りないかもしれませんが、裾野を広げる観点でカジュアルな緩い記事を書きました:haskell:
「Haskellを業務で使う、カジュアルに」
https://haskell.jp/blog/posts/2020/haskell-casually-at-work.html
おぉ、本人が気づいてなかった:exclamation:
stackのver. 2.3.1がでました! :tada:
バイナリパッケージでリリースされるプラットフォームが減り、Linux版などをダウンロードするURLが変わったのでスクリプトでダウンロードしている人は気をつけろ、と。
https://github.com/commercialhaskell/stack/releases/tag/v2.3.1
あれま……
Redditからです。 Wisconsin大学での、HaskellとRustの講座です。
この時期にゆっくり思索するのにも良いかと。

CS 538: Theory and Design of Programming Languages (Spring 2020)
https://pages.cs.wisc.edu/~justhsu/teaching/current/cs538/calendar/

Reddit記事
https://www.reddit.com/r/haskell/comments/gb1gx4/uwisconsin_course_on_haskell_and_rust/
Egisonのパターンマッチを50ページほどで解説するチュートリアル資料「プログラミング言語Egison入門」を公開しました.
ぜひ読んでみてください!
egison.org/tutorial.pdf
ArchWSLを使ってる方がどのくらいいるのかわからないんですが、このissueについて何かしら知ってる方いますか?
xmonadがコンパイルできなくってお亡くなりに…
https://gitlab.haskell.org/ghc/ghc/issues/17918
強力なパターンマッチはほしいのですが
パターンの網羅性や冗長性の確認はできますか?
どこかで研究課題としてあがっていたとおもいましたので。
あまり気にしなくていいのならそれでもいいのですが。
今年は ICFP 2020 もオンラインになるようです:earth_americas:
https://icfp20.sigplan.org/

別件で、ZuriHac (スイスで行われる大きなHackathon)もオンラインで行われるとのことです:haskell:
https://zfoh.ch/zurihac2020/
8月予定の新書籍です。著者からして期待大:book::lion_face:

Algorithm Design with Haskell
https://www.cambridge.org/core/books/algorithm-design-with-haskell/824BE0319E3762CE8BA5B1D91EEA3F52#
パターンの網羅性や冗長性の確認はまだできていないです.もしするとしたら,網羅性のチェックがしやすいように,パターンの書き方に制限を加えた上で考えることになりそうだと思っています.
:bird: 先生が :lion_face: が表紙の本を書くと!
@railo.kanamura has joined the channel
@matsumau5 has joined the channel
@claude0803sz has joined the channel
こういうの直接こっちにも投げてくれると楽しい https://twitter.com/public_ai000ya/status/1256915989133811714
RecordDotSyntax Acceptされたんですね :clap:
趣味でですがこんな物を作りました :speaker:
バックエンドのWebSocketsで通信してるところをHaskellで書いてます-!
https://twitter.com/lotz84_/status/1257224385536000000
これは英語版READMEを用意して Redditへ貼るのが良いのでは:sunny::haskell:
(まだ時期尚早?)
もうちょっと開発が進んだらそれも良いですね!
今は周りの人からフィードバックもらいたいなと思って日本語で書いてます :smile:
@aejque has joined the channel
@summit.isys has joined the channel
:confetti_ball: :sunny: :confetti_ball: Google Summer of CodeとしてHaskell.orgが採択したプロジェクトが決まりました
https://summerofcode.withgoogle.com/organizations/6387985961975808/
多相レコードのブログ記事、初心者向けの体で書こうと思ったんですが、
lensでやると記号がエグくて初心者バイバイ感半端ないという問題が発覚

main = do
    let p = Person { name = "Taro", age = 10 }

    -- レコード要素へのアクセス
    print $ p ^. #name

    -- レコード要素への代入
    print $ p & #age .~ 11

初心者に勧めるのはRecordDotSyntaxを待った方が良いかも……
RecordDotSyntax が普及したらその紹介事態が「最新多相レコード事情」になりますねw
個人的には初心者向けは端から諦めるか、軽く背景を注釈しつつ「表層的な構文なんて飾りだよ?」って考えを受け入れられる人をターゲットにするべきかと。
慣れてしまうとlensの書き方も読みやすいと感じてしまうのもまた罠ですね :sweat_smile:
使いづらいシステムにも人間は順応しちゃいますからね... :cold_sweat:
lens、初心者にとって辛いのはシンタックスのほかにもあって、型エラーになったときの対処なんですね。
型推論のストーリーくらいは紹介しないといけなくて、どうしても中級者以上になってしまう
ではlensじゃなくて、普通に #age :: Person -> Int になるIsLabelインスタンスを使う、というのも手なのですが、 現状 instance (HasField x r a) => IsLabel x (r -> a) のインスタンス定義がない。
各自が勝手にOrphan Instanceを定義すると、他と被ったときに死ぬので xxx-orphans みたいなライブラリが欲しい
lensに関しては演算子よりもアルファベットの名前のついた関数(viewやset)を使ったほうが初心者に優しいような気がします
ここでnand2tetris知ったのですが、Haskellでコンパイラ作りました。めちゃくちゃ面白かったです!
難易度とテストの並びが絶妙で0から実装したものが動く感じがよかったです。
satunさん、mitsuchiさんありがとうございました!
@noahzark2525 has joined the channel
(こちらで宣伝するの忘れてました)
Recursion Schemesで書かれたアルゴリズムを溜めていくGitHubレポジトリを作りました!
今はlengthみたいな基本的な関数が多いですが、ソートやグラフアルゴリズムなどのアルゴリズムをRecursion Schemesで考えて載せていける場所にしていきたいと思っています。(僕の趣味プロジェクトなので更新はそんなに早くないかもしれません)
Pull Request なども大歓迎です :raised_hands:
https://twitter.com/lotz84_/status/1257991021234778113
@kibunjojosa has joined the channel
先日受理され、パッチもマージされました!迅速にレビューをしてくれた委員会に感謝 https://gitlab.haskell.org/ghc/ghc/-/merge_requests/3174
AsyncとIO, ListとZipList, EitherとValidationのような、「並行して実行するApplicativeと逐次実行するApplicative」のペアを表す型クラス。ScalaやPureScriptにはすでにあるらしい。
https://gvolpe.github.io/blog/parallel-typeclass-for-haskell/
@katsutoshiokumura has joined the channel
@a3.works has joined the channel
class (Monad m, Applicative f) => Parallel f m | m -> f, f -> m where
  parallel :: m :~> f
  sequential :: f :~> m

逐次実行がモナド、並行して実行できる方がApplicativeなのがまた面白いですね
@akt.hrms has joined the channel
@kanshu.yokoo has joined the channel