haskell-jp / mokumoku-online #80

山本悠滋です。
今日は https://shinjukugyoen.connpass.com/event/371150/ に参加しているので、合間にいつもどおりmakeMistakesToLearnHaskellの続きを進められていたらします。
先週行った、rename 関数 case 式対応の確認をしていました。
確認したいテストケースを rename 関数に渡す方法の試行錯誤や、渡して処理した結果の正否確認に手間取ってしまいました。
確認した結果、実装内容が間違っていたことがわかり、修正を行い何とか正しい結果が得られるようになりました。
Ex.6.4 の問題文を見ると、freeVars_case, abstract_case, collectSCs_case の定義を与えてテストするようにとありましたが、
collectSCs_e 関数は case 式に最初から対応済みのようで、case 式を含むコア言語プログラムのラムダリフティングも一応できましたので、
この問題はひとまず完了とさせていただこうと思います。
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問を与えられてしまう トホホ... 出直します
書籍: 関数型プログラミング実践入門を読みつつ、手を動かせました。
特にフィボナッチ数列で遊んでHaskellすげぇぇ!となりました。
一応Qiitaにもまとめておいたので、よりエレガントな実装とかあれば教えてください!

https://qiita.com/sigma_devsecops/items/24e05b6248b717aa4067
... Replies ...
Competitive Programming in Haskell: Tree path decomposition, part II: Brent Yorgey 先生の blog をもとに Kattis の問題を解きます
S.K.です。ちょっと遅くなってしまいましたが、今週もお世話になります。よろしくお願いいたします。
今週も Implementing Functional Languages: a tutorial の Chapter 6 Lambda Lifting の続きを進めて行こうと思います。
山本悠滋です。昼寝などしていて遅くなってしまいましたが、いつもどおりmakeMistakesToLearnHaskellやHaskell-jp Blogの続きをします。
Haskell-jp Blogの続きも延長戦で少しはします。
Ex.6.5 に対応中です。
テキストに載っていた例を含む次のテストプログラム

f = \\x. x+1;
main = f 4

の動作確認結果を元に方針を決めて実装中です。
時間がかかってしまってますが、自分に可能なペースで進めて行こうと思います。
Competitive Programming in Haskell: tree path decomposition, part II: 読了 先々々週の課題の2つ目 "Factor-Full Tree" の最終解説 木を道に分解して (pathDecomposition) その高さ順に 素数の冪を割り当てる そうすると それらの積がそれぞれ個別でありながら 最大でも integer overflow を起こさないようにできるとね ナルドねぇ これに類似して先週の課題 "Floating Formations" だがその困難さに匙を投げていたが かすかに光明が見えてきた まず biconnected components を抽出して 残りの森(木のリスト)を道に分解して それらを高さの順に 助け舟を出せばよいのでは? それを目指して実装中
Competitive Programming in Haskell: Union-Find: Brent Yorgey 先生の blog をもとに Kattis の問題を解きます
... Replies ...
• 昨日のAtCoderの復習
https://judge.u-aizu.ac.jp/onlinejudge/finder.jsp?course=ITP1 をちまちま解く
• 内包表記弱いので復習、モナドについての理解を深めるため、関数プログラミング実践入門の続きを読む
S.K.です。ちょっと遅くなってしまいましたが、今週もお世話になります。よろしくお願いいたします。
今週も Implementing Functional Languages: a tutorial の Chapter 6 Lambda Lifting の続きを進めて行こうと思います。
山本悠滋です。いつもどおりmakeMistakesToLearnHaskellやHaskell-jp Blogの続きをします。
makeMistakesToLearnHaskellの進捗: https://github.com/haskell-jp/makeMistakesToLearnHaskell/commit/3f66f62dcab40cb6128939a7642e7f2d423477fe
Haskell-jp Blogの方はもう少しキリよくなるまで頑張ります。
... Replies ...
先週着手した Ex.6.5 (冗長なスーパーコンビネータの排除)を、ひとまず完了しました。
次いで、Ex.6.6 (冗長なローカル定義の排除)の対応中です。
テキストに載っていた例を含む次のテストプログラム
f x = let g = (\\y. y+1) in g (g x);
main = f 4
の動作確認結果を元に方針を決めて実装中です。
こちらも Ex.6.5 と同様に時間がかかってしまってますが、自分に可能なペースで進めて行こうと思います。
Competitive Programming in Haskell: Union-Find: 読了 ナルホド Data.Array.ST を用いて高速 しかも中間 State を一般的な Semigroup 属性の Data で維持するスグレもの 今まで手持ちのライブラリは Data.Vector ベースの物しか無かったので助かる 今回出された例題 "Duck Journey" と "Inventing Test Data" に挑戦中
たった今 米国夏時間が終わった 来週から日本に行きますので 2週間休みます
Haskell-jp Blogの進捗。Okapiの仕様を日本語にするのがめんどかった。
https://github.com/haskell-jp/blog/commit/58a4a7a887a5792f85e2a1a3a19e64c8649e4e09
遅くなりましたが、報告
• 昨日のAtCoderの復習完了
• AIZU3問くらい解いた。
• 関数プログラミング実践入門のモナド部分を読み進めた。
• Kattiesのアカウント作成Brent Yogey先生のブログを漁った。難しさeasyかつ解説のあるやつから解いていく。対応表が作れると理想。
... Replies ...