haskell-jp / mokumoku-online #42

ose20です.
こちら () のお気楽 Haskell プログラミング入門というサイトを参考にしながら色々なパズルを解くプログラムを Haskell で書いてみます.
チェシャ猫です。今更ですが in します。前回 Gloss の概要はわかったので、表示は一旦置いといて今日はゲームのロジック部分を粛々と進めてます。
makeMistakesToLearnHaskellの成果:
https://github.com/haskell-jp/makeMistakesToLearnHaskell/commit/2e61e4372dd43ab76bb347121c72c047cdde37bc
cabal replについて: cabal replやstack replが ghc --interactive に渡すオプションを参考に、 stack repl がやっていることを ghc --interactive を直接起動することで再現できるか試してみてます。思ったより難しい。
1 時間ぐらいしかやってないですが、とりあえずコマンドが一つ追加できました。`RIO.Vector` が破壊的更新をエクスポートしていないので、そこだけ Data.Vector.Generic.Mutable を直接インポートするという邪道に出ています。
お気楽 Haskell 入門のパズルの解法の部分を読んでいました.
紹介されている関数の (++) を使わない実装を試してみたり,中にはそれで実行速度が速くなったのもあって楽しかったです.例えば concatNumber という数字のリストを分解する関数が速くなりました:blush:
-- 例: concatNumber' [1..3] = [[1,2,3],[1,23],[12,3],[123]]
concatNumber' :: [Int] -> [[Int]]
concatNumber' xs = aux xs id [] where
  aux [] _ _          = []
  aux [x] f cum       = f [x] : cum
  aux (x:y:zs) f cum  = aux (y:zs) (f . (x:)) (aux ((10*x+y):zs) f cum)
山本悠滋です。いつもどおりのmakeMistakesToLearnHaskellの続きと、 https://www.youtube.com/watch?v=fwoXXLmUiU8 の配信で今ぶち当たっている問題について解決方法を探ります。
ose20です.今回も『お気楽Haskell』の記事を読みながらプログラムを書いてみます.アルゴ式でSTモナドを使ったプログラムを書きたいのでその辺を読みます
wai-sampleの問題の解決... の前段階として、ファイルの分割を行いました。
https://github.com/igrep/wai-sample/commit/2c5d6766bf10b41ba8d792b970d317042daf6c58
WriterモナドやReaderモナドを自分で作ったり,プログラムの部分項まで丁寧に型を追ったりしていました.以前触れたときより結構理解が進んで楽しかったです.
あと、参考ライブラリーとしてworld-pieceというパッケージのソースを読んでました。良くも悪くも依存が少なく、拡張可能和に必要なコードが1ファイルにまとまっていて読みやすいです。
https://github.com/cdepillabout/world-peace/blob/master/src/Data/WorldPeace/Union.hs
いつもどおりmakeMistakesToLearnHaskellの続きと、余裕があれば https://twitter.com/igrep/status/1490285921966903301 の件の続きをやります。
アルゴ式で動的計画法の問題をHaskellで解いていきます.制約的に素朴な実装でもまだ間に合いますが,ST sモナドの使い方を覚えたいのでこれを使ってたくさん問題を解きたいです.
アルゴ式の動的計画法の部分を,ST sモナドを使って解いたり,Data.List の関数をうまく使って簡潔に書く方法を色々と試しました.段々とST sモナドを使った書き方やhaddockを読むのにも慣れてきて今はHaskellでプログラムを書くのがとても楽しいフェイズです:blush:
Haskell-jp関係の雑務をした後、makeMistakesToLearnHaskellの続きを書いてました。コミットは後ほど
... Replies ...
先週と同様Haskell-jp関係の雑務の続きをやった後、makeMistakesToLearnHaskellの続きと、余裕があれば https://twitter.com/igrep/status/1490285921966903301 の件の続きをやります。
Graham Huttonの“Monadic Parser Combinators”という論文を読みます.これを理解することと,実践としてアルゴ式の正規表現の問題を解いたり簡単なプログラミング言語のパーサを作ることを目標にやっていきます.
"Haskell In Depth," Bragilevski V., (Manning 2021), Ch. 6. Structuring programs with monad transformers
Haskell-jp Slack Workspaceについてのアナウンスと、makeMistakesToLearnHaskellの続き https://github.com/haskell-jp/makeMistakesToLearnHaskell/commit/4cb747fce654cf19fc19d424814a5fcebf589364 と、cabal replの件を進めました。cabal replの件はcabal.projectの構文エラーで思いのほか苦戦しました :sweat_drops:
用事があってフルで時間取れなかったのですが,論文の3章まで読みました.このままもう少し読み進めます:writing_hand:
@hakamori has joined the channel
山本悠滋です。unicode-showのリファクタリング(とエクスポートする関数の整理)makeMistakesToLearnHaskellの続きをします。
初めましてhakamoriです。Haskellに少し興味があったので参加してみました!
Haskell経験は全くないので、コード書きながら文法を覚えようと思います。
おっ。適当なボイスチャンネルに常駐してますんで、何か口頭で聞きたくなったらどうぞ
ありがとうございます
"Haskell In Depth," Bragilevski V., (Manning 2021), Ch. 9. Haskell data and code at run time.
遅れました!先週に引き続きGraham Hutton, Erik Meijer “Monadic Parser Combinators”を読みます:relieved:
ご飯食べるのでボイスチャンネルから抜けますね。(通常こんな告知をする必要は全くありませんが、今回は「ボイスチャンネルに常駐する」と予告したので)
戻りました :white_check_mark:
参考までに、開発環境をどのようにしているか聞いていいでしょうか?
僕は最初scoopでstack入れてたんですけど、nixが使えないのがわかりました。
とりあえずアンインストールして、(dockerと迷いましたが)wslで環境構築し直そうかと考えてます。
nix、個人的には余り好きじゃないし敢えてこだわる必要もないかなぁと思います。
私はChocolateyで入れたstackを使っていますが、おいおいghcupとcabalですべて賄うよう切り替える予定です。
misoっていうweb frameworkを試そうと思ったんですが、それがnixでbuildするみたいでして…
... Replies ...
あぁー、GHCJSが絡むとnixは確かに事実上必須らしいですねぇ :weary:
GHCJS自体がそれでなくとも茨の道、という印象なので、試してみてもいいですが余り期待しない方がいいかもしれません。
なるほど。ありがとうございます。
微妙かもしれませんが、満足するまでいじってみようと思います。
GHC 9.4からだったか、GHCにJSバックエンドができてGHCJSが事実上統合される、という話も伺っているのでそれでマシになるといいんですが(ソースがパッとググって出てこないな...
文法は少しわかりましたが、ほとんどの時間を開発環境について調べるのにつかってしましました…( ; ω ; )
次参加するなら、もう少し進めたいです。
unicode-showパッケージのリファクタリングをしてます。テストが通らねぇ。
https://twitter.com/igrep/status/1502933999937007620
論文の4章までを読んでいました.たくさんプログラムが出てくるので自分で手も動かせていい感じです
@hakamori Nix は Windows に対応してませんねえ