haskell-jp / mokumoku-online #61

RTS で統計値を出していました。ナップサック問題で boxed vector を使うと GC が長引きますが、 MUT も 100 倍以上になっていて首を傾げていました
Zainab Ali - Peeling The Banana: Recursion Schemes from First Principles - Code Mesh 2017 圏論の diagram chasing を用いてのcata/ana/hylo の導入が分かりやすかった
競プロ典型 90 問 17 日目 - Crossing Segments(★7)あーだこーだイロイロお試し中
Mark3 TIMで追加された命令(Move)についてのGC対応も一応行ってみました。
ただ、未対応の状態でも既存のテストプログラムはOKとなってしまうので、テストプログラムの追加が必要かもしれません。(お恥ずかしい)
自分にとってまだまだ先は長そうです。
山本悠滋です。
まだ出先なので、帰宅してお昼ご飯食べてからmakeMistakesToLearnHaskellの続きをします(出来ればcabal replの件も)。17:00過ぎには終えます。
"Effective Haskell - Solving Real-World Problems with Strongly Typed Functional Programming," Rebecca Skinner (The Pragmatic Bookshelf 2023) を斜め読みします
あとハシゴで 競プロ典型 90 問 18 日目 - Statue of Chokudai(★3)
S.K.です。今週もお世話になります。よろしくお願いします。
引き続き、Implementing Functional Languages:a tutorial の、4.4.4 Garbage Collection の続きを進めていこうと思います。
今日はここまでにします。
・cabal replの件はもう直ぐで既存のテストケースを全てクリアできそうです。
・makeMistakesToLearnHaskellの進捗
https://github.com/haskell-jp/makeMistakesToLearnHaskell/commit/ea93c015f01967a27330728414868ad0cc381ed8
"Effective Haskell," by Skinner R. Ch. 1 ~ Ch. 5 まで斜読 この教科書の意図する出発点にようやく到着したところ (η-Reduced と Pointfree を可読性の観点から容認しているのが好き)
18 日目 - Statue of Chokudai(★3)AC Haskell 解の中で 最速(2者同速)かつ最 Golf 的だった 
本日はこれにて離脱
Mark3 TIMのGC対応の続きをするつもりでしたが、compose関数を使った別のテストプログラムについてMark1, Mark2, Mark3の動作の違いを調べていたら、思いのほか時間がかかってしまいました。
他にも色々疑問点が出てきて、確認中です。(お恥ずかしい)
自分にとってまだまだ先は長そうです。
山本悠滋です。いつもどおりmakeMistakesToLearnHaskellの続きと、cabal replの件を進めます。
"Effective Haskell - Solving Real-World Problems with Strongly Typed Functional Programming," Rebecca Skinner (The Pragmatic Bookshelf 2023) Ch. 6 ~ を斜め読みします
あとハシゴで 2日目に挑戦
S.K.です。今週もお世話になります。よろしくお願いします。
引き続き、Implementing Functional Languages:a tutorial の、4.4.4 Garbage Collection の続きを進めていこうと思います。
Advent Calendar のネタを求めて高精度数値計算 CReal を試します。
CReal が入っている numbers ライブラリを cabal install numbers で入れて(haskell自身は GHCup でインストールしています)
import Data.Number.CReal
...

というプログラムを runhaskell すると
    Could not load module 'Data.Number.CReal'
    It is a member of the hidden package 'numbers-3000.2.0.2'.
    You can run ':set -package numbers' to expose it.
    (Note: this unloads all the modules in the current scope.)
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.

となりました。
確かにメッセージに書いてあるとおり ghci で :set -package numbers してからだと import Data.Number.CReal はエラーなく通るようになりました。
runhaskell でもエラーにならないようにするにはどうしたらよいでしょうか。
私も詳しい仕組みを把握しているわけではないのですが、 cabal install numbers ではなく cabal install --lib numbers でインストールすれば使えるようになるはずです。どうも cabal install はライブラリーのインストールではなく、パッケージに含まれている実行ファイルのインストールのために作られているようなので
cabal install --lib numbers したら runhaskell でもエラーが出なくなりました。ありがとうございます!
--lib のこと勉強してみます。 :pekorin:
... Replies ...
昨日あった、 AtCoder Beginner Contest 331 - F Palindrome Query の解き直しをした後、advent calendar 記事を書き始めます。
Advent calendar の投稿を作ります〜
用事があるのでお先に失礼します。cabal install のアドバイスありがとうございました。
例によって解き直していたらやめなければいけない時間になってしまいました,提出はこれです: https://atcoder.jp/contests/abc331/submissions/48167629

Rolling hash というものが嫌いでずっと触っておらず,今回初めて書きました. mwc-random を使って64ビット長の素数をランダム生成したり, segment tree のコードの一箇所でoff-by-oneバグがあってそれを訂正したりしていたら二時間半かかったみたいですね.辛い….
"Effective Haskell," by Skinner R. Ch. 6 Type Classes 斜読完了 とにかく長い 懇切丁寧 Language Extensions との絡みは勉強になった
あとハシゴで Advent of Code 2023 2日目 正解 カーテンが揚がって クリスマスツリーの根元が見えて来た
各章の頭を書いて全体を繋げました
compose関数を使ったテストプログラムのMark1とMark2,Mark3の動作の違いの原因が、ようやく整理できてきたように思います。
1つは引数スタックの初期値の違いによるもののようで、もう1つはGCのバグのようです。(お恥ずかしい)
自分にとってまだまだ先は長そうです。
cabal replの件はようやく既存のテストケースを全て通せました。
makeMistakesToLearnHaskellについてはもう少しキリのいいところまで書いてからpushします。
出先から帰ってからいつも通りmakeMistakesToLearnHaskellの続きとcabal replの件を進めます。でも今日は昨日遅かったし昼寝が長くなりそう:yawning_face:
今回も Advent calendar の投稿を作ります〜
"Effective Haskell - Solving Real-World Problems with Strongly Typed Functional Programming," Rebecca Skinner (The Pragmatic Bookshelf 2023) Ch. 7 ~ を斜め読みします
あとハシゴで 10 日目に挑戦
S.K.です。今週もお世話になります。よろしくお願いします。
今週も引き続き、Implementing Functional Languages:a tutorial の、4.4.4 Garbage Collection の続きを進めていこうと思います。
白鳥です。遅れて参加させていただきます。Implementing functional languages: a tutorialの4.3を読んでいこうと思います
PreCure Virtual Worldが気になるので今日はこの辺にします。
・cabal replの件は、ここまでに作った関数を使い、cabalファイルを差し替えてcabalコマンドを呼ぶ処理の実装に着手しました。
・makeMistakesToLearnHaskellの更新:
https://github.com/haskell-jp/makeMistakesToLearnHaskell/commit/c687498ebed3faebb363831b22b048507b0ea785
全体の 5% くらい進捗が進みました
Exercise 4.4まで進めました。Three Instruction Machineで算術演算ができるようになりました
先週見つけたバグを一応何とか修正できた...つもりです(お恥ずかしい)。現在確認中です。
自分にとってまだまだ先は長そうです。
"Effective Haskell," by Skinner R. Ch. 7 Understanding IO, Ch. 8 Working with the Local System 斜読完了 プロジェクト開発の基本を丁寧に解説している
Advent of Code 2023 Day 10: Pipe Maze グラフのサイクルを見つける方針で苦闘中
こんにちは〜。今週もアドベントカレンダーの投稿を作ります
"Effective Haskell - Solving Real-World Problems with Strongly Typed Functional Programming," Rebecca Skinner (The Pragmatic Bookshelf 2023) Ch. 9 ~ を斜め読みします
あとハシゴで 15 日目に挑戦
S.K.です。今週もお世話になります。よろしくお願いします。
今週も引き続き、Implementing Functional Languages:a tutorial の、4.4.4 Garbage Collection の続きを進めていこうと思います。
白鳥です。よろしくお願いします。Implementing functional languages: a tutorial 4.3.2の続きを読んでいこうと思います
出先なので帰ってからmakeMistakesToLearnHaskellの続きを書きます。今日は17時過ぎに終えるのであまり進めないかも
今日はmakeMistakesToLearnHaskellだけ進めました。この後用事なのでここまでで!
https://github.com/haskell-jp/makeMistakesToLearnHaskell/commit/037c8e075bbfc66709677ea556115ab2d353c1f9
Exercise 4.5でif式を実装した後に4.3.3の途中まで読みました。