haskell-jp / mokumoku-online #81

「6.5.2 Abstracting free variables in functions」を読み直して、処理内容の理解を進めました。
少しずつ理解できてきましたが、まだ完全には理解できていないので、引き続き内容理解を進めようと思います。
忘れないうちに貼っておきます。
• 昨日のAtCoderの復習
• Data.ListとData.Mapの関数をチラ見しておく
• aizuのITP1とAtCoder Beginners Selectionsを解き終えたので今日からkattisでYorgey先生の解法を勉強して実装速度を上げます。
Competitive Programming in Haskell: Stacks, queues, and monoidal sliding windows: Brent Yorgey 先生の blog をもとに Kattis の問題を解きます
S.K.です。遅くなってしまいましたが、今週もお世話になります。よろしくお願いいたします。
今週も Implementing Functional Languages: a tutorial の Chapter 6 Lambda Lifting の続きを進めて行こうと思います。
山本悠滋です。外出で遅くなってしまいましたが、makeMistakesToLearnHaskellとHaskell-jp Blogの続きをやります。
Competitive Programming in Haskell: Stacks, queues, and monoidal sliding windows: 読了 sliding windows および queue を double stack で実現するのはよく知られているが monoidal に拡張したのは珍しい それを借りて課題 "Tired Terry" に挑んだ 文字を Sum Int に変換すれば Yorgey 先生の windows 関数が使える 短い直截的適用であるが非常に勉強になる しかし Kattis の判定は 69/81 testcases までで TLE むむむ...どうしたもんだ?
「6.5.2 Abstracting free variables in functions」を読み直して、abstractJ_e 関数の処理内容を一応何とか理解しました(つもり)。
引き続き、演習 6.7 (abstractJ e 関数を case 式にも対応させる)の実装中です。
sigmaです。
• 昨日のAtCoderの復習
• アドベントカレンダー執筆にあたり、情報収集 https://qiita.com/advent-calendar/2025/haskell-atcoder
◦ この辺読んで見る https://zenn.dev/toyboot4e/books/seriously-haskell/viewer/2-1-stderr
• 簡単な問題何か解く(1日最低1AC)
Advent of Code 2025 を Haskell で解きます
S.K.です。遅くなってしまいましたが、今週もお世話になります。よろしくお願いいたします。
今週も Implementing Functional Languages: a tutorial の Chapter 6 Lambda Lifting の続きを進めて行こうと思います。
山本悠滋です。昼寝などで遅くなってしまいましたが、Haskell-jp Blogの記事の公開と、makeMistakesToLearnHaskellの続きをやります。
思いのほか時間がかかりましたが記事を公開できました: https://haskell.jp/blog/posts/2025/wai-sample.html
makeMistakesToLearnHaskellの更新: https://github.com/haskell-jp/makeMistakesToLearnHaskell/commit/49ddba644a38368a3655edd6e1d17484c01724a7
Advent of Code 2025 は Day 2 まで来ました gold stars 獲得
「6.5.2 Abstracting free variables in functions」の演習 6.7 (abstractJ_e 関数を case 式にも対応させる)の続きを進めていました。
abstract_e 関数の case 式対応と同様に abstractJ_case という補助関数を実装して対応しましたが、テストプログラムをいくつか作成してテストしたところ、バグが見つかりデバッグ中です。
AtCoderの復習と簡単な問題演習までは完了。
調べ物とアドカレはこれからベストエフォートでやります
Advent of Code 2025 を Haskell で解きます
S.K.です。遅くなってしまいましたが、今週もお世話になります。よろしくお願いいたします。
今週も Implementing Functional Languages: a tutorial の Chapter 6 Lambda Lifting の続き(Ex.6.7 のデバッグ)を進めて行こうと思います。
山本悠滋です。例の如く昼寝で遅くなってしまいましたが、タイプセーフプリキュアの更新やmakeMistakesToLearnHaskellの続きをします。
用事があるのでちょっと早めに終えます hask(_ _)eller
タイプセーフプリキュアの更新(Pull requestを作り忘れてしまった。まあいいか):
makeMistakesToLearnHaskellの更新:
Advent of Code 2025 は Day 9 Part 1/2 まで来ました Part 2/2 で苦戦中 長方形の内部判定が謎だが 座標圧縮をすれば良いのではないかと実装中
「6.5.2 Abstracting free variables in functions」のEx.6.7 (abstractJ_e 関数を case 式にも対応させる)の続き(デバッグ)を進めていました。
残念ながら、デバッグ完了には至りませんでした。
先週追加した abstractJ_case 関数のデバッグ中に、Mark2 までと Mark3 までとで全体の処理の流れが違うことに(今さらながら)気がつきました。

Mark2まで:lambdaLift = collectSCs . rename . abstract . freeVars
Mark3:lambdaLiftJ = collectSCs . abstractJ . freeVars . rename -- 変数名のユニーク化を最初に行っている模様。

Mark3 では、abstract 関数が abstractJ 関数に置き換わっただけと思い込んでいたので、この辺りも関係ありそうです。
自分にとってはまだまだ先は長そうですが、引き続き進めて行こうと思います。
Advent of Code 2025 を Haskell で解きます
山本悠滋です。昼寝で遅くなってしまいましたが、makeMistakesToLearnHaskellの続きと、できればmakeMistakesToLearnHaskellを一般公開するときに向けたウェブアプリケーション作りに取りかかります。
S.K.です。遅くなってしまいましたが、今週もお世話になります。よろしくお願いいたします。
今週も Implementing Functional Languages: a tutorial の Chapter 6 Lambda Lifting の続き(Ex.6.7 のデバッグ)を進めて行こうと思います。
Advent of Code 2025 Day 10 Part 1/2 を通過 Part 2/2 では 例題は通るが実データは Hang する(トホホ) 全数検査を List でするのはさすがに無理なのか? はて Vector 化するか?
makeMistakesToLearnHaskellの更新: https://github.com/haskell-jp/makeMistakesToLearnHaskell/commit/1fb69805161767a6b84243e28a551a01782a5924
ウェブアプリケーション作りは、Nix FlakesやらQwikやら、(Haskellと直接関係がないものばかりで恐縮ですが)練習がてらチャレンジしたい技術を使って取り組もうと考えているため、ひとまずNixの勉強を始めて終わりです。
「6.5.2 Abstracting free variables in functions」のEx.6.7 (abstractJ_e 関数を case 式にも対応させる)の続き(デバッグ)を進めていました。
残念ながら、今週もデバッグ完了には至りませんでした。
ただ、少しですが進展もありました。
collectSCs を工夫すると、abstractJ のなかで新たに付けられた局所変数名 sc が衝突していても、その名前を使わずに済むらしいですが、残念ながら自分の実装はそうなっていないので、何らかの対策が必要となりそう。
(実験的に、変数名のユニーク化を abstractJ の後にも追加してみたら、エラーとなったテストプログラムも一応意図した結果となったけど、ほとんどの変数はサフィックスが二重に付いてしまう。)
また、case 式の処理部分で環境 env の更新を行えていないので、その対応も必要。
自分にとってはまだまだ先は長そうですが、自分にできるペースで進めて行こうと思います。
@前村一輝 has joined the channel
今日は昨日のAtCoderの復習をメインに進めます。

余力があればアドベントカレンダーの記事増やします
https://qiita.com/advent-calendar/2025/haskell-atcoder
Advent of Code 2025 を Haskell で解きます 遅ればせながら本日が最終回
山本悠滋です。いつもどおりmakeMistakesToLearnHaskellの続きと、できればmakeMistakesToLearnHaskellを一般公開するときに向けたウェブアプリケーション作り(というよりNixの勉強?)に取り組みます。
S.K.です。遅くなってしまいましたが、今週もお世話になります。よろしくお願いいたします。
今週も Implementing Functional Languages: a tutorial の Chapter 6 Lambda Lifting の続き(Ex.6.7 のデバッグ)を進めて行こうと思います。
makeMistakesToLearnHaskellの進捗: https://github.com/haskell-jp/makeMistakesToLearnHaskell/commit/efea0e30df6997fdfde54676e0da9de06a1d07b9
Webアプリケーション作りについては、Nixの勉強をしつつGHCのバックエンドをどうしようか検討しています。
... Replies ...
Advent of Code 2025 Day 11 Part 1/2 は Data.Graph.graphFromEdges や Data.Tree.{unfoldForest,foldTree} を用いて華麗に通過 ところが Part 2/2 ではヤッパリ泥沼化 頭を冷やして後日再挑戦という事で 冷却材に「また逢う日まで」尾崎紀世彦などを聞いて逃避中 また復習のために見た Justin Le の Day10 Part 2/2 の解答 https://github.com/mstksg/advent-of-code/blob/main/reflections/2025/day10.md には圧倒された まさにレベチ! 世にはすごい人が居るもんだ
「6.5.2 Abstracting free variables in functions」のEx.6.7 (abstractJ_e 関数を case 式にも対応させる)の続き(デバッグ)を進めていました。
自分の実装では、最初に行う rename の結果(ns)を freeVars の間保持しておいて、abstractJ に渡す必要が出てきてしまい、テキストと全然違ってきてしまってますが、State モナドを使って対策しようとしています。
初めて使うので、色々調べながら実装中です。
環境 env の更新は、もしかしたらしなくてもいいかもしれないけれど、要確認です。
時間はかかってしまってますが、引き続き進めて行きます。
Competitive Programming in Haskell: Range Queries, Classified: Brent Yorgey 先生の blog をもとに Kattis の問題を解きます