Avatar
YoshikuniJujo
ef89ee45550f7377284d31e49fc57e5732ffc2b95a7bf35d0f1291d6fa278758
Haskell好き

たぶん僕が一番好きなまんがは「よつばと!」だと思う。

Replying to Avatar YoshikuniJujo

https://zenn.dev/yoshikuni_jujo/articles/introduction-to-yaftee

アドカレの記事。少しマニアックなのと、説明が足りてないところがあるかもだけど

最終的に作るAPNGファイルがこれ。実行に1時間半以上かかるけど。

言ってないぷく

個人的に好きな書き方として

while (42) {

// do something

}

ってのがある。

「なんちゃってコード」を書かせると、その人のバックグラウンドがわかっておもしろいかも。

「この人はセミコロンを使うな。C系の人かな」とか「この人は丸括弧にとりつかれてる。Lisp族の人なんじゃないかな」とか。

僕が「なんちゃってコード」を書くとしたらどうなるかな。

buy x = do

price <- checkPrice x

pay price

get x

// 怒られるほう

main = replicateM_ (if exist egg then 6 else 1) $ buy milk

// よしよしされるほう

main = do

replicateM_ 1 $ buy milk

when (exist egg) $ replicateM_ 6 $ buy egg

/* 牛乳を1つ買ってきて。卵があったら6つお願い。 */

function buyGroceries() { const milk = new Milk(1); const eggs = hasEggs() ? new Eggs(6) : null; return { milk, eggs };}

この夫はちゃんと「牛乳1本と卵6個」を買ってる。まあ「買う」のではなく「生成」してる感じだけど。

https://qiita.com/hansel_no_kioku/items/c3a765f3a4da9f388eff

「別にeffect systemを求めてないけど」って話。

effect systemの話をすると、PureScriptははじめはIOの代わりにeffect systemを使ってたのだけど、しばらくすると結局はIOと同等のシステムにもどってたように思う。

どういう経緯だったのか知らないけど。

effect systemとかconduitとかFRPとか、技術的興味でライブラリを書いたりしてるけど、そういったものを実際に使うべきかどうかという話については僕はよくわからない。

実際のところIOを使えば何でもできるので。

なので、effect systemは厳密にはHaskellの話ではなくて、Haskellの方言であるGHC版Haskellの話になってると思う。

https://qiita.com/YoshikuniJujo/items/8dd63c9415ccda20be28

https://qiita.com/YoshikuniJujo/items/3e7adbbbf0e7f73f669f

このあたりの話。

ひとつにまとめるために一度型の情報を消して、でも安全に取り出すために、型の情報を別に追加するという話。

このあたりは、もうHaskellの型システムをハックしてクラックして、だましているので、Haskellの枠組みを超えてしまっている。

型チェックのすりぬけの必要なくeffect systemが作れるレベルで、堅牢かつ柔軟な型システムを持った新しい言語というものは、ひとつあったほうがいいし、それはたぶんHaskellという伝統的な言語の枠組みのなかでやろうとすると、なかなか難しいように思う。

Haskellのeffect systemは言語拡張を使いすぎてて、ほとんどHaskellじゃない気がする。

一度型チェックをすりぬけておいて、その後でチェックするみたいな技法も使うし。

Haskell primeみたいな何か別の言語に思える。

effect systemみたいな話になってくると「Haskellの次」が求められるけど、本当に人々はエフェクトシステムを求めているのだろうか。

unbirthdayというのとおなじようにunchristmasというのがあってもいいかもしれない。

クリスマス好きだけどね。

クリスマス

普段の日は「何もない」が0で「プレゼントをあげる」がプラスになるけど、この日は「何もない」がマイナスで「プレゼントをあげる」が0になる日。

かつ……さくさく……

てんぷら……さくさく……