haskell-jp / mokumoku-online #64

少し早いですが今日はここまでにしておきます。
cabal replの件は、前回までに作ったものを実行してみたところ --build-tool-depends なんてオプション知らないと言われ、 https://bsky.app/profile/igreque.info/post/3km7qbe4ijs2s の通りちゃんと調査したはずなのにな...と絶望 :disappointed: しつつ build-tool-dependsについても .cabal ファイルを書き換えることで、libraryの情報を他のコンポーネントにコピーする方向で着手しています。
makeMistakesToLearnHaskellの進捗:
https://github.com/haskell-jp/makeMistakesToLearnHaskell/commit/20ce57fa38600588f5217c93eab507e28dd9611c
4.6.4 Printing a list の Ex.4.25 の続きを進めました。
解くのにすごく時間がかかってしまいましたが、一応リストを表示できるようになった模様です。
ただ、実行ステップ数もかなり増えてしまいました。これで正しいのか不安です。既存のテストプログラムが正しく動くかまでは確認できませんでした。
Hinze R, Magalhães J P, Wu N. §1 ~ §4: 読了 Insertion sort/Bubble sort が step 関数 swap を介し fold/unfold を用いて dual に実現され
これを範として一般化すると para/apo は (co)algebra のある step 関数を介し fold/unfold で dual に実現される
競プロ典型 90 問 31 日目 - VS AtCoder(★6)イロイロと実例を試して Grundy 数を探している どうせそれの mex なんでショ と云う目論見
山本悠滋です。いつもどおりmakeMistakesToLearnHaskellと、cabal replの件の続きをやります。今日もHaskell関係ない別件の締め切りが迫っているので早めに切り上げるかもしれませんが悪しからず!
Hinze R, Magalhães J P, Wu N. (2013) §5 ~
あとハシゴで 32 日目 - AtCoder Ekiden(★3)
S.K.です。今週もお世話になります。よろしくお願いします。
先週に続き、Implementing Functional Languages: a tutorial の、4.6 Mark 5: Structured data の続きを進めていこうと思います。
キリがいいのでここまでにしておきます。
・makeMistakesToLearnHaskellの進捗: https://github.com/haskell-jp/makeMistakesToLearnHaskell/commit/78e7af1db5185d0aabcb59aa95556928c5d5c781
・cabal replの件は、libraryのbuild-tools-dependsを追加する処理について、テストを修正するなどしてました。
Hinze R, Magalhães J P, Wu N. §5 ~ §7: 読了 Merge sort を実現するにあたって Growing Tree と Merging Tree を行うが fold apo を用いると伝統的な merge sort のようになり 相対的に unfold para を用いると heap sort のようになる
競プロ典型 90 問 32 日目 - AtCoder Ekiden(★3) N が 10 以下なので充分に(制約付き)全数列挙で解ける 結果 AC だった さらに桁違いに早い BitDP 解法があるらしいので検討中
4.6.4 Printing a list の Ex.4.25 について、出力がリストの場合のみ topCont 関数を実行するようにしたところ、既存のテストプログラムも正しく動いたようなので、Ex.4.25をひとまず完了としました。
その後、Ex.4.26 を解いています。
尾上能之 "融合変換による関数プログラムの最適化" (2002) 博士論文
あとハシゴで 競プロ典型 90 問 34 日目 - There are few types of elements(★4)
S.K.です。今週もお世話になります。よろしくお願いします。
先週に続き、Implementing Functional Languages: a tutorial の、4.6 Mark 5: Structured data の続きを進めていこうと思います。
山本悠滋です。今日は https://ospn.connpass.com/event/304655/ で出展中なので、合間を縫って makeMistakesToLearnHaskell の続きを進めます。
尾上能之 "融合変換による関数プログラムの最適化" : 読了 融合変換からなるプログラムを hylo の再帰形式で現わす 酸性雨定理を適用し中間的なデータ構造を用いない効率的なプログラムを導く 変換アルゴリズムを GHC 上に実装しベンチマークで効果を示した - 詳細な議論や導出はすべて省略したが それでもわかる壮大な馬力に圧倒された
競プロ典型 90 問 34 日目 - There are few types of elements(★4): アイデア(最長部分列が中間にある時と末尾にある場合に分けて集計する)出しただけで未実装
Ex.4.26 は、簡易表示の時に、出力リストに要素が追加された場合は要素の値、それ以外は'.'を出力するようにしてみました。テストプログラムが一通り動いたので、ひとまず完了としました。
その後、4.6.5 Using data structures directly を進めています。†マークが付いているセクションなのに加えて、あまり詳しく説明がされておらず、自分にとってはかなり難しいです。
バタバタして遅くなってしまいましたが、今日のmakeMistakesToLearnHaskellの進捗です。
初めて画像を追加しました。
https://github.com/haskell-jp/makeMistakesToLearnHaskell/commit/4dd8179ed96d000bdc8e8baaa152a3d6c80035a8
Ralf Hinze, Daniel W. H. James Reason Isomorphically! (2010)
あとハシゴで 競プロ典型 90 問 35 日目 - Preserve Connectivity(★7)
S.K.です。今週もお世話になります。よろしくお願いします。
先週に続き、Implementing Functional Languages: a tutorial の、4.6 Mark 5: Structured data の続きを進めていこうと思います。
出先から帰ってきたのが今なので、これからいつもどおり makeMistakesToLearnHaskell や cabal repl の件の続きをやります。
Ralf Hinze, Daniel W. H. James §1 ~ §4: 読了 普通の等価を緩めて何でも Isomorphism で証明してやろうという試み 表現関手を算術的に遂行すると米田の補題が容易に導出される なるほど
競プロ典型 90 問 35 日目 - Preserve Connectivity(★7) 難問過ぎてナンモ分らん LCA の組み合わせで解くのかも
少し早いですが 本日はこれにて離脱
cabal replの件は、前々回いじったテストコードの型チェックが通るよう修正しました。
makeMistakesToLearnHaskell は、先週作った画像を趣旨に合うよう修正しているところです。ターミナルのスクショを編集するスキルが低くて苦戦してます :sweat:
... Replies ...
4.6.5 Using data structures directly の続きを進めました。caseを使ったプログラムについて、パース結果の ECase の各分岐先の式を見て、
・分岐先の n 番目の引数がそのまま返されている様だったら、分岐先の式を Enter (Data n) とする。
・分岐先の n 番目の引数が分岐先の式に全く現れなければ、Data n を Move するのを省略する。
という意味かなと思って、その処理を実装しようとしています。(もっと最適化できるのかもしれないけど、自分には思いつきませんでした。)
というわけで本日のmakeMistakesToLearnHaskellの進捗。InkscapeでPNG出したら画像が小さくなってしまった。まぁいいか。
https://github.com/haskell-jp/makeMistakesToLearnHaskell/commit/0b0f873690461572699068b40d8ba91c27246c62
Ralf Hinze, Daniel W. H. James (2010) §5 ~
あとハシゴで 36 日目 - Max Manhattan Distance(★5)
山本悠滋です。今日は出先のカラオケで、makeMistakesToLearnHaskellをちょっとずつ進めます。
S.K.です。今週もお世話になります。よろしくお願いします。
先週に続き、Implementing Functional Languages: a tutorial の、4.6 Mark 5: Structured data の続きを進めていこうと思います。
この後また別の用事なので今日はここまでにしておきます。カラオケ楽しかったー:microphone:
https://github.com/haskell-jp/makeMistakesToLearnHaskell/commit/03d55e0984ea23c96e7dc311a95ce86962eaa849
Ralf Hinze, Daniel W. H. James §5 ~ §8: 読了 §6. Fixpoints から学習曲線が絶壁のように急峻となるが 米田の補題と随伴から豊かな結果が「同値性で推論」出来るようになる というお話
競プロ典型 90 問 36 日目 - Max Manhattan Distance(★5) AC 今回は楽勝だった
本日はこれにて離脱
4.6.5 Using data structures directly の続きを進めました。
caseを使ったプログラムについて、
・分岐先の式が n 番目の引数をそのまま返していたら、分岐先の式を Enter (Data n) とする処理をひとまず実装完了。
・分岐先の n 番目の引数が分岐先の式に全く現れなければ、Data n を Move することを省略する処理を実装中。
といった状況です。結構時間かかってしまってます。自分にとっては、まだ先は長そうです。
haskell-shoen(Haskell荘園) Recursion Schemes
あとハシゴで 競プロ典型 90 問 39 日目 - 039 - Tree Distance(★5)
S.K.です。今週もお世話になります。よろしくお願いします。
先週に続き、Implementing Functional Languages: a tutorial の、4.6 Mark 5: Structured data の続きを進めていこうと思います。
山本悠滋です。
出先から今帰ってきたので遅くなってしまいましたが、いつもどおりmakeMistakesToLearnHaskellとcabal replの件の続きをします。
本日のmakeMistakesToLearnHaskellの進捗 https://github.com/haskell-jp/makeMistakesToLearnHaskell/commit/b63fc84aa406ceaf54bd4c09c1970339c7878ed8
cabal replの件は、汚い設計だなぁと思いながら build-tool-depends のパースに挑んでいます。
https://bsky.app/profile/igreque.info/post/3koxy32w5ay2b
4.6.5 Using data structures directly の続きを進めました。
caseを使ったプログラムについて、分岐先の n 番目の引数が分岐先の式に全く現れなければ、Data n を Move することを省略する処理を実装中。
(分岐先の式(CoreExpr型)がEVar, ENum, EConstr, EApの場合についてはひとまず実装完了したつもりで、ECase, ELetの場合について実装中です。)
先週に引き続き結構時間がかかってしまってます。自分にとっては、まだ先は長そうです。
haskell-shoen(Haskell荘園) Recursion Schemes 読了 圏論の図式も使用例もあり recursion schemes の広がりを展望するのに便利
競プロ典型 90 問 39 日目 - 039 - Tree Distance(★5)Warshall-Floyd で全点対距離を求めるのは O(V^3) なのでムリ それしか思い付かナイ 要再考
@森本涼介 has joined the channel
Tim Sheard & Emir Pasalic, Two-Level Types and Parameterized Modules. JFP 14(5): 547--587 (2004)
あとハシゴで 競プロ典型 90 問 40 日目 - Get More Money(★7)
S.K.です。ちょっと遅くなりましたが、今週もお世話になります。よろしくお願いします。
先週に続き、Implementing Functional Languages: a tutorial の、4.6 Mark 5: Structured data の続きを進めていこうと思います。
大分遅くなってしまいましたが(しかもお昼ご飯食べてから!)いつもどおりmakeMistakesToLearnHaskellとcabal replの件の続きをします。