Hash λ Bye

https://utky.github.io/ に移行したので今後こちらに記事は追加されません

2017-01-01から1年間の記事一覧

Left Recursionの悪夢再び

はじめに Happyで生成したパーサのコンパイル遅すぎてもう限界だったのでparser combinatorに戻ってきた。 そしてまた現れたのだ、やつが。。。。 問題 やろうとしてることは以前と変わらない。 SML Definitionを読んで型の注釈を表す式 ty を解析しようとし…

GHCの中間言語Coreへの脱糖を覗き見る

Haskell (その3) Advent Calendar 2017 11日目の記事。(予約投稿知らなかったのでフライングになった) GHCがコンパイルの途中で中間表現として用いるCoreの生成っぷりを観察する。 観察して、あーはいはいなるほどね(わかってない)、と言うだけになりそう。 …

SMLの関数適用を構文解析する時の問題

まだ構文解析器で苦労している。 今回も詰まっているのは構文のconflict。 問題 これが関数適用 app : exp exp これが二項演算子適用 infixapp : exp vid exp この時に入力を x y z とすると2つの解釈ができてしまうことになる。 ((x y) z) とするネストし…

好きなプログラミング言語の好きなところについて思った

改めて最近実感すること。 Haskell, Elm, Clojureほんと好き。 Scala勉強しなきゃなーと思いながらClojureを触ってしまうことが多かったのだけれど、 その理由が少しずつわかってきた。 いい言語たち いままで少しだけ触れてきたJava, Python, Scala, Goはい…

技術書を読む時の問題意識について(答えはまだない)

何か学習したい、と思う動機があるとする。 現在の僕の場合は「仕事の関係でLinuxカーネルについておさえておきたい」とか。 学習したいので何らかの書籍を参照することになる。 問題 読んでいる内容が頭に定着していない感覚 購入した詳解Linuxカーネルでは…

小さく作ることとモチベーション

Minimum viable product - Wikipedia 小さく作りながら進めるのがうまい人は作業ステップの分割ではなくてゴールの分割に優れているなあ、と思う。 最低限のユーザが試すことができる機能のみを搭載したプロダクトをMVP(Minimum Viable Product)というらしい…

仕事で使った言語

僕もまとめておこう。 Java 書いたコードの量はダントツに多い。 リフレクションお化けにハマったり、JavaEEにハマったりした。 いまはJavaに興味なくてJVMに興味が移ってしまった。 JavaScript jQueryが流行ってた頃に一度検索バーの補完用モジュール書いた…

左再帰を含む構文解析むずい

やろうとしていること Haskellのparsecを使ってSMLの構文を解析し構文木を生成する。 やっていること SMLの構文解析はいろいろステップがある。 リテラル (special constants) 識別子 (identifier) 型注釈 !!イマココ!! パターンマッチ 式 宣言 モジュール構…

Standard MLの定義を読み始める

自分の欲しいDSLを作るにあたって、構文として参考になりそうなものを探した結果MLが良いのではとなった。 特にStandard MLが良さそうだ。 OCamlより個人的には素直な文法に感じた。Schemeと違ってTypingもいずれできそうな構文だった。Haskellのようなオフ…

Strongly static types, not for every task なのは何故なんだ

Clojure Rationale このページにこんな文があった。 Pure functional languages tend to strongly static types * Not for everyone, or every task 「静的型付けは全てのタスクに適しているわけではない。」 そのタスクとは何を想定しているのか、ここでは…

ClojureのS式になんでも書けるという話

S式という記法(?)はほんとになんでも書けると知った。 翌日追記: S式というかReaderがすごいっぽい。 例えば (def japanese '(式のなかに 日本語を書くと そのままシンボルになる)) とか (defn 二倍 [x] (* x 2)) とか書ける。 それにmutil line stringも (d…

Haskellerの好きなところ

僕はHaskellが好き。 なんだけど、同じくらいHaskellもくもく会の常連の人達が好き。 ちょっとした型についての質問から、いつの間にかホワイトボード上で証明とか書き出して「あー、ほんとだー、そういうことかー」って言ってる感じが好き。 解らないことが…

Haskellの代数データ型をJava的なインタフェースと捉える

Haskellの代数データ型は僕にとってJavaのインタフェースに近い。 データ型がインタフェースでそのデータを受け取る関数がインタフェースのメソッドに相当する。 データをパターンマッチで分解して値コンストラクタ別の関数定義をするのは、 インタフェース…

Clojureでの副作用の表現について

自分が悩んでることを拙い語彙でぽつぽつ綴るので、誰にも伝わらないと思う。 DBアクセスする機能を実装したいとする。 java.jdbc を使ってDBアクセスレイヤを実装することになるのが普通かなと思う。 Clojureは関数型プログラミング言語なので、組み立てに…