haskell-jp / mokumoku-online #80
Previous
Top
Next
igrep
2025-10-19 13:32:12 +0900
山本悠滋です。
今日は
https://shinjukugyoen.connpass.com/event/371150/
に参加しているので、合間にいつもどおりmakeMistakesToLearnHaskellの続きを進められていたらします。
<non-user>
2025-10-19 18:00:20 +0900
S.K.
2025-10-19 18:14:54 +0900
先週行った、rename 関数 case 式対応の確認をしていました。
確認したいテストケースを rename 関数に渡す方法の試行錯誤や、渡して処理した結果の正否確認に手間取ってしまいました。
確認した結果、実装内容が間違っていたことがわかり、修正を行い何とか正しい結果が得られるようになりました。
Ex.6.4 の問題文を見ると、freeVars_case, abstract_case, collectSCs_case の定義を与えてテストするようにとありましたが、
collectSCs_e 関数は case 式に最初から対応済みのようで、case 式を含むコア言語プログラムのラムダリフティングも一応できましたので、
この問題はひとまず完了とさせていただこうと思います。
karoyakani
2025-10-19 18:15:02 +0900
Competitive Programming in Haskell: Tree path decomposition, part I: 読了 先々週の課題の2つ目 "Factor-Full Tree" の解説のその1 続きが来週にあるとのことで 難度が今まで最高の Difficulty: Hard 7.4 なので さすがに最終解決までに2回を掛けるらしい 自分の解は「異なる素数を各枝に配する」ものであって WA (testcase 7/36) 判定でした まさしく解説のとおり木の枝数が長い path がある場合に label が integer overflow になってしまうからで いろいろ模索しても解けなかった 想定解は来週までお預け 加えて類似問題2問を与えられてしまう トホホ... 出直します
igrep
2025-10-19 19:29:02 +0900
電車の中などでmakeMistakesToLearnHaskellを進めてました。
https://github.com/haskell-jp/makeMistakesToLearnHaskell/commit/50aafbc8965053754841e1e8e657ef4f44c860cc
sigma
2025-10-19 19:59:52 +0900
書籍: 関数型プログラミング実践入門を読みつつ、手を動かせました。
特にフィボナッチ数列で遊んでHaskellすげぇぇ!となりました。
一応Qiitaにもまとめておいたので、よりエレガントな実装とかあれば教えてください!
https://qiita.com/sigma_devsecops/items/24e05b6248b717aa4067
... Replies ...
<non-user>
2025-10-26 13:00:22 +0900
karoyakani
2025-10-26 13:07:30 +0900
Competitive Programming in Haskell: Tree path decomposition, part II
: Brent Yorgey 先生の blog をもとに Kattis の問題を解きます
S.K.
2025-10-26 13:23:25 +0900
S.K.です。ちょっと遅くなってしまいましたが、今週もお世話になります。よろしくお願いいたします。
今週も Implementing Functional Languages: a tutorial の Chapter 6 Lambda Lifting の続きを進めて行こうと思います。
igrep
2025-10-26 16:36:04 +0900
山本悠滋です。昼寝などしていて遅くなってしまいましたが、いつもどおりmakeMistakesToLearnHaskellやHaskell-jp Blogの続きをします。
<non-user>
2025-10-26 18:00:05 +0900
igrep
2025-10-26 18:02:28 +0900
makeMistakesToLearnHaskellの進捗:
https://github.com/haskell-jp/makeMistakesToLearnHaskell/commit/a9ccbc1eddb3622c0157d8f3a37f884e0b53920f
課題15はやっぱ長い...
igrep
2025-10-26 18:02:56 +0900
Haskell-jp Blogの続きも延長戦で少しはします。
S.K.
2025-10-26 18:20:39 +0900
Ex.6.5 に対応中です。
テキストに載っていた例を含む次のテストプログラム
f = \\x. x+1;
main = f 4
の動作確認結果を元に方針を決めて実装中です。
時間がかかってしまってますが、自分に可能なペースで進めて行こうと思います。
karoyakani
2025-10-26 18:59:01 +0900
Competitive Programming in Haskell: tree path decomposition, part II: 読了 先々々週の課題の2つ目 "Factor-Full Tree" の最終解説 木を道に分解して (pathDecomposition) その高さ順に 素数の冪を割り当てる そうすると それらの積がそれぞれ個別でありながら 最大でも integer overflow を起こさないようにできるとね ナルドねぇ これに類似して先週の課題 "Floating Formations" だがその困難さに匙を投げていたが かすかに光明が見えてきた まず biconnected components を抽出して 残りの森(木のリスト)を道に分解して それらを高さの順に 助け舟を出せばよいのでは? それを目指して実装中
igrep
2025-10-26 20:41:20 +0900
Haskell-jp Blogの進捗:
-
https://github.com/haskell-jp/blog/commit/3e58bf7d4cd1bb13608110ec8739f3a163e5a663
-
https://github.com/haskell-jp/blog/commit/2c2802d6804959b10064ca34567c56ba595bf98a
<non-user>
2025-11-02 13:00:25 +0900
karoyakani
2025-11-02 13:03:49 +0900
Competitive Programming in Haskell: Union-Find
: Brent Yorgey 先生の blog をもとに Kattis の問題を解きます
... Replies ...
sigma
2025-11-02 13:21:44 +0900
• 昨日のAtCoderの復習
•
https://judge.u-aizu.ac.jp/onlinejudge/finder.jsp?course=ITP1
をちまちま解く
• 内包表記弱いので復習、モナドについての理解を深めるため、関数プログラミング実践入門の続きを読む
S.K.
2025-11-02 13:39:15 +0900
S.K.です。ちょっと遅くなってしまいましたが、今週もお世話になります。よろしくお願いいたします。
今週も Implementing Functional Languages: a tutorial の Chapter 6 Lambda Lifting の続きを進めて行こうと思います。
igrep
2025-11-02 13:52:10 +0900
山本悠滋です。いつもどおりmakeMistakesToLearnHaskellやHaskell-jp Blogの続きをします。
<non-user>
2025-11-02 18:00:12 +0900
igrep
2025-11-02 18:11:30 +0900
makeMistakesToLearnHaskellの進捗:
https://github.com/haskell-jp/makeMistakesToLearnHaskell/commit/3f66f62dcab40cb6128939a7642e7f2d423477fe
Haskell-jp Blogの方はもう少しキリよくなるまで頑張ります。
... Replies ...
S.K.
2025-11-02 18:11:58 +0900
先週着手した Ex.6.5 (冗長なスーパーコンビネータの排除)を、ひとまず完了しました。
次いで、Ex.6.6 (冗長なローカル定義の排除)の対応中です。
テキストに載っていた例を含む次のテストプログラム
f x = let g = (\\y. y+1) in g (g x);
main = f 4
の動作確認結果を元に方針を決めて実装中です。
こちらも Ex.6.5 と同様に時間がかかってしまってますが、自分に可能なペースで進めて行こうと思います。
karoyakani
2025-11-02 18:14:12 +0900
Competitive Programming in Haskell: Union-Find: 読了 ナルホド
Data.Array.ST
を用いて高速 しかも中間 State を一般的な Semigroup 属性の Data で維持するスグレもの 今まで手持ちのライブラリは Data.Vector ベースの物しか無かったので助かる 今回出された例題 "Duck Journey" と "Inventing Test Data" に挑戦中
たった今 米国夏時間が終わった 来週から日本に行きますので 2週間休みます
igrep
2025-11-02 18:30:23 +0900
Haskell-jp Blogの進捗。Okapiの仕様を日本語にするのがめんどかった。
https://github.com/haskell-jp/blog/commit/58a4a7a887a5792f85e2a1a3a19e64c8649e4e09
sigma
2025-11-02 21:10:04 +0900
遅くなりましたが、報告
• 昨日のAtCoderの復習完了
• AIZU3問くらい解いた。
• 関数プログラミング実践入門のモナド部分を読み進めた。
• Kattiesのアカウント作成Brent Yogey先生のブログを漁った。難しさeasyかつ解説のあるやつから解いていく。対応表が作れると理想。
... Replies ...
<non-user>
2025-11-09 13:00:22 +0900
sigma
2025-11-09 13:20:47 +0900
遅くなりました。
sigmaと申します。
https://x.com/sigma5736394841
• 昨日のAtCoderの復習
• 前回教えていただいた、`interact`を使った入出力管理の練習
https://byorgey.github.io/blog/posts/2025/06/10/comprog-hs-intro.html
• Aizuの問題を解く。ITP1全部終わったらkatties に移る予定
S.K.
2025-11-09 13:26:31 +0900
S.K.です。ちょっと遅くなってしまいましたが、今週もお世話になります。よろしくお願いいたします。
今週も Implementing Functional Languages: a tutorial の Chapter 6 Lambda Lifting の続きを進めて行こうと思います。
igrep
2025-11-09 16:39:16 +0900
山本悠滋です。例の如く昼寝で遅くなってしまいましたが、makeMistakesToLearnHaskellやHaskell-jp Blogの続きをします。
<non-user>
2025-11-09 18:00:04 +0900
igrep
2025-11-09 18:17:14 +0900
Haskell-jp BlogについてはPull requestを送ってからビルドが通るよう格闘中です。
https://github.com/haskell-jp/blog/pull/223
makeMistakesToLearnHaskellはもう少し進めてから共有します。
S.K.
2025-11-09 18:31:28 +0900
先週着手した Ex.6.6 (冗長なローカル定義の排除)を、何とか完了しました。
これで「6.4 Mark 2: Improving the simple lambda lifter」はひとまず完了とさせていただき、引き続き「6.5 Mark 3: Johnsson-style lambda lifting」を進めて行こうと思います。
igrep
2025-11-09 18:46:13 +0900
MakeMistakesToLearnHaskellの更新:
https://github.com/haskell-jp/makeMistakesToLearnHaskell/commit/3db8e1e424599ee35a7deba6d87bcef66a5dc850
<non-user>
2025-11-16 13:00:05 +0900
S.K.
2025-11-16 14:03:26 +0900
S.K.です。遅くなってしまいましたが、今週もお世話になります。よろしくお願いいたします。
今週も Implementing Functional Languages: a tutorial の Chapter 6 Lambda Lifting の続きを進めて行こうと思います。
igrep
2025-11-16 14:06:00 +0900
JSConf JPに参加しているので合間を縫ってmakeMistakesToLearnHaskellの続きをちょっとだけやります。
sigma
2025-11-16 17:14:42 +0900
開始と終了まとめてですみません。
本日の進捗は以下です。
• 昨日のAtCoderの復習
https://github.com/RyosukeDTomita/atcoder/tree/main/src/2025-11-15
• アドベントカレンダーを書きました
https://qiita.com/sigma_devsecops/items/3f388b7553339f1de38c
残り22記事がんばります。
<non-user>
2025-11-16 18:00:10 +0900
igrep
2025-11-16 18:05:40 +0900
makeMistakesToLearnHaskellの更新
https://github.com/haskell-jp/makeMistakesToLearnHaskell/commit/9e495a51936234a46a1c799267910de0482d98d6
S.K.
2025-11-16 18:37:29 +0900
「6.5 Mark 3: Johnsson-style lambda lifting」の内容を一通り読んで、Ex.6.7 までのコードを写経し、以下のテストプログラムで処理結果を比較してみました。
f x = letrec g = \y. cons (x*y) (g y) in g 3
main = f 6
Mark2 の結果:
f x_0 = letrec
g_1 = sc_2 g_1 x_0
in g_1 3 ;
sc_2 g_3 x_4 y_5 = cons (x_4 * y_5) (g_3 y_5) ;
main = f 6
Mark3 の結果:
f x_0 = g_1 x_0 3 ;
g_1 x_0 y_2 = cons (x_0 * y_2) (g_1 x_0 y_2) ;
main = f 6
Mark3 の方が、テキスト通りに letrec 式がなくなって、g_1 が直接再帰的になっているようです。
この動作結果を参考に、もう一度説明を読み返そうと思います。
<non-user>
2025-11-23 13:00:10 +0900
karoyakani
2025-11-23 13:11:35 +0900
Competitive Programming in Haskell: Union-Find, part II
: 日本旅行で2回休みましたが再開です Brent Yorgey 先生の blog をもとに Kattis の問題を解きます
S.K.
2025-11-23 13:37:36 +0900
S.K.です。ちょっと遅くなってしまいましたが、今週もお世話になります。よろしくお願いいたします。
今週も Implementing Functional Languages: a tutorial の Chapter 6 Lambda Lifting の続きを進めて行こうと思います。
igrep
2025-11-23 16:19:48 +0900
昼寝などで遅くなってしまいましたが、makeMistakesToLearnHaskellの続き(とHaskell-jp Blogもちょっと?)をやります。
<non-user>
2025-11-23 18:00:15 +0900
sigma
2025-11-23 18:04:24 +0900
今日はバタバタしていてあまり手が動きませんでした。
• 昨日のAtCoderの復習
• 教わったYorgey先生の`interact`と`>>>`を使った入力処理になれてきたのでVS Codeのスニペットにしました。
•
https://judge.u-aizu.ac.jp/onlinejudge/finder.jsp?course=ITP1
の1_8_Dと1_9_A
• なぜ関数プログラミングは重要か? の冒頭を読んだ
igrep
2025-11-23 18:06:07 +0900
makeMistakesToLearnHaskellの進捗。やっと課題16の修正が終わった。
https://github.com/haskell-jp/makeMistakesToLearnHaskell/commit/303366a73ddb5a5102ba6bc6ceb63b433495e025
Haskell-jp Blogのレビューもしています。思ったより重たい修正が来そう :weary:
... Replies ...
karoyakani
2025-11-23 18:06:18 +0900
Competitive Programming in Haskell: Union-Find, part II: 読了 前回出された宿題 "Duck Journey" と "Inventing Test Data" の模範解答 大変勉強になり収穫だった
前者の問題については Union-Find の annotation として Data.Bits.Ior を使ったが 先生は Filter (x .|. y) をインスタンスされていて コーユーのは初めて見た 言われてみれば「確かに」となるが 自分では思いつかない
後者の問題については全然歯が立たなくて LCA を使うのかなぁ?とか愚案を弄んでいたが Kruskal's Algorithm を拡張した先生の模範解答を見てびっくり仰天 驚天動地 ひっくり返った 2度読み 3度読みした いったい何処からそんな発想が生まれるのか! ただし先生のコードはバグがあって (2 places) コンパイルしないのは秘密
Previous
Top
Next