haskell-jp / mokumoku-online #54

出先なので、落ち着いてから参加します。
S.K.です。今週もお世話になります。よろしくお願いします。
Implementing Functional Languages:a tutorial の Mark7 Gマシン Ex. 3.46 の続きを進めたいと思いますが...
無理そうだったら、保留して 4 TIM: the three instruction machine を進めようと思います。
こんにちは〜。 ABC 301 E を解いてみます
"簡約!? λカ娘" (#5 ~ #6)
あとハシゴで AtCoder 鉄則本 *A68 - Maximum Flow* 再挑戦
2ヶ月ぶり、Change-Making-Problem(お釣り生成問題:お釣りを最小枚数で払う問題)で硬貨が3種類の場合の効率的なアルゴリズムの検証をやります。
前回は思いついたアルゴリズムに考慮漏れがあったので修正してリベンジです。
チェシャ猫です。作成中のオンライン実行環境に関数定義の構文を追加します。
山本悠滋です。いつも通りmakeMistakesToLearnHaskellの続きと、cabal replの件を進めます。所用のため17:00過ぎに終えます。
一瞬ですが, を Shake build system で書き換えるべく参加します.
途中ですが用事があるので抜けます。次回完結を目指します。
makeMistakesToLearnHaskellは一段落だけ進めました。コミットはあとで共有します。
cabal replの件については https://twitter.com/igrep/status/1657642740497416192 の通り、cabalファイルの部分的なパースをほぼ0から書き直しています。
ファイルを消してGitをいじってたら終わりました.悲しい……
AST に関数定義の構文を追加しパーサーだけ実装できました。評価器はまだです。
3 The G-machine の Ex. 3.46 は今週もできなかったため保留して、4 TIM: the three instruction machine を進めました。
Mark1 TIM は写経するだけでした。Ex. 4.2 の途中です。
"簡約!? λカ娘" (#5 ~ #6) 読了 Ajhc Catamorphism redux Kleisli 圏 など昔の記事は元気があって楽しい
AtCoder 鉄則本 A68 - Maximum Flow : Ford-Fulkerson の実装が不完全 簡単なネットワークの場合は通るが 2頂点の間に閉路があるとバグる 悲しい
ABC 301 E を解きました!
山本悠滋です。お昼を食べてからですが、いつもどおりmakeMistakesToLearnHaskellの続きと、cabal replの件を進めます。
S.K.です。今週もお世話になります。よろしくお願いします。
Implementing Functional Languages:a tutorial の Mark7 Gマシン Ex. 3.46 の続きを進めたいと思いますが...
無理そうだったら、保留して Mark1 TIM の続きを進めようと思います。
白鳥です。久しぶりに参加させていただきます。
Implementing functional languages: a tutorialの3章The G-machineを読み進めていこうと思います
toyboot4e です。遅延セグメント木を写経します
gksatoです.AtCoder用の Max flow algorithm (Goldberg-Tarjan の preflow-push algorithm with scaling) を進めたいと思います.
global labelling だけ書いて 肝心の push/relabel メインルーチンを書いていませんが,とりあえず抜けます.
進捗ほぼゼロです:disappointed_relieved:
遅延評価セグメント木の区間更新を 2/3 写経しました。区間の移動方法がゲームのバグみたいだったので、 glichLoop という名前で作用付きモノイドをあてていきました。
3.3.4 compiling a programの途中まで読みました
Mark7 Gマシン Ex. 3.46 は今週も完了できませんでした...
Mark1 TIM の方は、4.2.6 ガベージコレクションが難しそうだったので、またしても保留して Mark2 TIM を少し進めました。
Mark2 TIM でも Mark7 Gマシン と似たようなReturn命令が追加されていて、こちらはコンパイラのなかで命令を生成する箇所が明記されていたので、もしかして、これが Ex. 3.46 の参考になったりして...
延長戦で本日の進捗。珍しく消した行の方が多い:sweat_smile:
まぁ、説明しなくていいところを削れたのでヨシ!
https://github.com/haskell-jp/makeMistakesToLearnHaskell/commit/53dbbb69e57ee33dac79f1b01e3362bc6e14451c
いつもどおり、makeMistakesToLearnHaskellの続きとcabal replの件です!お昼ご飯 :curry: 食べてから!
S.K.です。今週もお世話になります。よろしくお願いします。
Implementing Functional Languages:a tutorial の Mark7 Gマシン Ex. 3.46 について、とりあえず、Mark2 TIM の真似をして進めてみようと思います。
Change-Making-Problem(お釣り生成問題:お釣りを最小枚数で払う問題)で硬貨が3種類の場合の効率的なアルゴリズムの検証の続きをやります。
15時過ぎ頃に抜ける予定です。
gksatoです.先週に続けて今週も参加させていただきます.AtCoder用の Max flow algorithm (Goldberg-Tarjan の preflow-push algorithm with scaling) を引き続き進めたいと思います.よろしくお願いします!
GHCup で Haskell環境を作ったのですが、quickcheck ライブラリ(パッケージ?)をインストールにはどういうコマンドを実行すればよいでしょか。
cabal-install が入っているなら cabal install --lib QuickCheck ですね
チェシャ猫です。前回に引き続き、自作のオンラインインタプリタを作ります。コールスタックの wind/unwind 部分です。
toyboot4e です。アルゴリズム実技検定の過去問を解きます〜
@igrep :arigatougozaimasu: 最初
Warning: The package list for '' is 71 days old.
Run 'cabal update' to get the latest list of available packages.

と言われたので、指示どおり cabal update してから再度 cabal install --lib QuickCheck してうまくいきました。
@tsukimizake has joined the channel
とても久しぶりに参加します。elm-compilerの吐くモジュールファイルが特定条件でばかでかくなるバグについてなりゆきで詳しくなってしまったので、修正を目指してなんやかんややります
... Replies ...
作業完了していないですが用事があるので抜けます。アルゴリズムの Haskell での実装はできました。
残るはアルゴリズムのプロパティテストです。テストにパスするといいのですが :pray:
(Haskell環境構築作業メモ見直したら3月に cabal install --lib QuickCheck やってました、忘れてた... orz)

久しぶりだったので asパターンも xy@(x,y) と書くべきところを (x,y)@xy と書いててエラーになってなかなか原因がわからず悩んでしまいました。
そろそろ抜けます.heuristics関連の調べ物とかしてたらすぐ時間が過ぎてしまって, 実装の ReaderT (Context v s a) (ST s) モナドの Context v s a が膨れ上がっただけで終わりました.

data MFSGCtx v s a = MFSGCtx {
  mfsgNumVs :: {-# UNPACK #-} !Int,
  mfsgEdgesOnVs :: {-# UNPACK #-} !(V.Vector (VU.Vector Int)),
  mfsgEdgeDsts :: {-# UNPACK #-} !(VU.Vector Int),
  mfsgCaps :: !(v s a),
  mfsgVsrc :: {-# UNPACK #-} !Int,
  mfsgVdst :: {-# UNPACK #-} !Int,
  mfsgExcesses :: !(v s a),
  -- | Levelwise single linked lists of active nodes.
  mfsgActiveListHeads :: {-# UNPACK #-} !(VUM.MVector s Int),
  mfsgActiveListNexts :: {-# UNPACK #-} !(VUM.MVector s Int),
  mfsgLevels :: {-# UNPACK #-} !(VUM.MVector s Int),
  -- | Levelwise double linked lists of nodes.
  mfsgLevelListHeads :: {-# UNPACK #-} !(VUM.MVector s Int),
  mfsgLevelListNexts :: {-# UNPACK #-} !(VUM.MVector s Int),
  mfsgLevelListPrevs :: {-# UNPACK #-} !(VUM.MVector s Int),
  mfsgNextEdge :: {-# UNPACK #-} !(VUM.MVector s Int),
  mfsgGap :: {-# UNPACK #-} !(DMut.PRef s Int)
  }

でかい型ですねえ….
数問解きました。コーナーケースの誤答に苦しんでいます。
スタックフレーム操作を実装し、オンラインインタプリタでユーザが定義した関数を呼び出せるようになりました。あとはテストを追加していきます。まだデプロイしてないですが、実装は https://github.com/y-taka-23/dncl-playground に置いてあります。
TIMのReturn命令を生成する条件をまねて、GマシンのReturn命令を生成しようとしたのですが、残念ながらうまくできませんでした。
今週も保留して Mark2 TIM の続きを進めました。こちらはとりあえず何とか Ex. 4.5 まで進めました。