haskell-jp / mokumoku-online #51

kkです.2回目まして.
mixfix operators対応の自作パーサを作成しています.
リストに応用できる可変長のdelimiter operatorと関数適用に対応したので,テストを拡充させます.
関数適用はトークンが2つ以上並んだものを関数と認識するだけで済んで簡単でしたが,リストはトークンの種類数を倍以上にする必要があり大変です.
https://gist.github.com/ijaketak/7ea6bf3f509250b6d9739216e546f144
toyboot4e です。こんにちは。 13:20 ~ こちらのバーチャルコンテストに出てみます
山本悠滋です。
いつもどおり、makeMistakesToLearnHaskellをちょっと進めた後、cabal replの件を進めます。今日は作ったものの動作確認なんで、手近なタイプセーフプリキュアのプロジェクトでテストするので、上手く動いていたらそのままキュアスカイのサポートもするかも
"Recursion Schemes, Part V: Hello, Hylomorphisms," Patrick Thomson https://blog.sumtypeofway.com/posts/recursion-schemes-part-5.html
あとハシゴで AtCoder 鉄則本 A46 - Heuristic 1 https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_at
しまった、、 Haskell で提出できないコンテストだったので終わります (・ω・)
S.K.です。今週もお世話になります。よろしくお願いします。
引き続き、Implementing Functional Languages:a tutorial の
コア言語のPack構文をパースできるようにすることから進めていこうと思います。
どうしてもわからず、またしてもnobsun様のGitHubを参照させていただき、何とか同じようにパースできる様になりました。
pAexprパーサの中でPackからEConstrを生成できるようにして、pExprパーサの中でpAexprパーサを呼び出せるようにすれば、
自然に関数適用の形になる模様。まだまだ理解不十分なことを痛感しました。nobsun様、今回もありがとうございました。
・cabal replの件は手元のプロジェクトで動作確認しています。~思ったよりちゃんと動いているっぽいです~
・makeMistakesToLearnHaskellについては課題17を少し
"Recursion Schemes, Part V" 読了
AtCoder 鉄則本 A46 - Heuristic 1 結果 AC 他に Haskell で通している人がいない
自作パーサ,バグを1つ発見,修正しました.
最終的にはmixfix operatorsだけで言語仕様を定義できるのではないかと妄想しています.インデントが鬼門か.
今日は急用によりほとんど参加できなさそうです。時間があったら今日か明日にmakeMistakesToLearnHaskellの続きを少し上げるかも知れません
"Recursion Schemes, Part VI: Comonads, Composition, and Generality," Patrick Thomson https://blog.sumtypeofway.com/posts/recursion-schemes-part-6.html
あとハシゴで AtCoder 鉄則本 A50 - 山型足し算 https://atcoder.jp/contests/tessoku-book/tasks/future_contest_2018_qual_a
S.K.です。今週もお世話になります。よろしくお願いします。
Implementing Functional Languages:a tutorial 3.8.5 The Compiler の Exercise 3.35 の続きから進めていこうと思います。
白鳥です。よろしくお願いします。「コンピュータシステムの理論と実装」10章を進めます
kkです.3度目まして.
mixfix operators対応の自作パーサを作成しています.
テストの拡充ですが,コードカバレッジ100%を達成しました.error部分には到達していないので正確にはほぼ100%ですが.
前に発見した到達不可能らしきパスはコードのリファクタリングによって除去されました.めでたい.
パーサだけならこれで完成だと思います.
https://gist.github.com/ijaketak/7ea6bf3f509250b6d9739216e546f144
(Haskellっぽい)mixfix operators対応言語の実装のために重要なのはインデントと型検査です.
インデントは文法にインデント量の比較を付与する文脈自由言語の拡張を定義する論文を発見しました.
型検査は構文解析それ自体にも適用できないか検討中です.
全ての予約語をn項演算子と考えると,型宣言やインスタンス定義に現れる予約語でさえただの関数と定義できるはずです.
難点は型検査が2回必要になることです.
コードの実行はどうしよう...コンパイラは書く自信が無いのでLLVM任せ?インタプリタと両立できれば最高ですね.
「コンピュータシステムの理論と実装」10章の構文解析器を作る問題のトークナイザ部分のデバッグとテストをしました
Exercise 3.35 の、またしてもPack構文対応処理のところでつまづいています。
let(rec)構文で局所定義が全て渡されるのとは勝手が違うようです。改めて理解不足を痛感しました。
Recursion Schemes 自身が一般化であるのに さらにその上を行く gcata gana 等々は圧巻でした
鉄則本 A50 - 山型足し算はまったく手付かず どっからどうしたもんか A49 での悪夢の再現かも
"Recursion Schemes for Higher Algebras," Bartosz Milewski" https://bartoszmilewski.com/2018/08/20/recursion-schemes-for-higher-algebras/
あとハシゴで AtCoder 鉄則本 A52 - Queue https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_az
山本悠滋です。makeMistakesToLearnHaskellの続きだけ進めます。メインPCの故障や、雑務がいろいろあるので早めに切り上げます。
kkです.
mixfix operators対応の自作言語を作成しています.
今日はインデントとコメント,ついでに文字列リテラルに対応しようと思います.
インデントはタブ文字非対応,コメントは開始と終了にASCII制御文字を割り当てようと思います.
実装が楽なのと,予約記号をできるだけ減らしたいのが理由です.
toyboot4e です。競プロ勢の黒魔術 Haskell を読んで、自分のテンプレートに取り込んで行きます。
S.K.です。今週もお世話になります。よろしくお願いします。
Implementing Functional Languages:a tutorial の Exercise 3.35 はとりあえず自分なりに何とか実装できたつもりなので、
確認して問題なさそうだったら、Exerceise 3.36 から、それが難しそうだったらスキップして、
3.8.6 Using the new boolean representation in comparisons から進めようと思います。
@mocamocaland has joined the channel
mocamocaです。
プログラミングHaskell第2版を読み進めます。
主な学び:
- ByteStringBuidler への変換関数 (`intDec`, floatDec, ..) を型クラスで共通化する
- VU.backpermute のように、ライブラリが提供する効率的な関数を利用する

取り込めなかったもの:
- StateT 型のパーサ
- 整数剰余型
- vecToBuilder などなど……
できたと思った Excercise 3.35 ですが、既存のテストプログラムが一部動かなくなっていて、デバッグしてました。
誤動作の原因が1つ判明して対策したのですが、あくまでも対症療法という感じです。お恥ずかしい限りです。
... Replies ...
結局ほとんどmakeMistakesToLearnHaskellの続きをやったりサボったりしてました。進捗はこちら:
https://github.com/haskell-jp/makeMistakesToLearnHaskell/commit/99df34672344e7f879d8323b4c6fa5792286b0a8
"Recursion Schemes for Higher Algebras" 読了 難解至極
鉄則本 A52 - Queue Data.Sequence の基本中の基本だった
プログラミングHaskell 4章読んでいました
自作言語,コメントと文字列リテラル,shebangの実装は完了しましたが,本丸のインデントまで辿り着けず.
文字列リテラルのエスケープ処理が未完なので次回です.
山本悠滋です。makeMistakesToLearnHaskellの続きだけ進めます。今日は用事があるので途中離脱します。
"Recursion Schemes by Example," Tim Williams https://github.com/willtim/recursion-schemes/raw/master/slides-final.pdf
あとハシゴで AtCoder 鉄則本 A56 - String Hash https://atcoder.jp/contests/tessoku-book/tasks/tessoku_book_bd
と、思ったけど先にやるべきことがありました。次の配信がちゃんとできるようにwai-sampleをビルドできるようにします。
S.K.です。今週もお世話になります。よろしくお願いします。
Implementing Functional Languages:a tutorial の Mark6 Gマシンについて、nobsun様のGitHubを参照させていただくところから進めたいと思います。
https://haskell-jp.slack.com/archives/CL3AXB1AL/p1677730463615279 で提案した cabal install --lib を用いない AtCoderの環境構築を仮想環境上で試そうと思っていますが, cabal build --offline がぶっ壊れてるっぽくてどう進んでもめんどくさそうだなあと思っています.
mocamocaです。
入門HaskellプログラミングLESSON4を読みます。
進捗は皆無ですが抜けます…
抜けます。
ファーストクラス関数のあたりをやっていました。
新しいPCにstackをインストールしてwai-sampleをビルドできるようにした後、献血に行って献血しながらスマホでmakeMistakesToLearnHaskellの続きを書いてました。成果は帰宅してから共有します。