Haskell

僕が良く使う Haskell のための Elisp

(defun haskell-dquote-plusplus-plusplus-dquote (arg) "Insert \" ++ ++ \"" (interactive "p") (insert "\" ++ ++ \"") (backward-char 5))でこれを (local-set-key "\C-x\"" 'haskell-dquote-plusplus-plusplus-dquote) で便利便利!

ソウルフル小話: 型付き関数型言語と C++ は同時に使ってはいけない

いやまじで使っちゃいけないです。三年前こういうことがあったんです。 Haskell と C++ を使っているコードなんですが、 突然ビルドができなくなる。さっきまで上手く行っていたのに、意味不明な C++ のエラーがゴボゴボ出てくる。 git status や hg status …

OutsideIn(X) と OCaml

Haskell の実装 GHC の新しめのバージョンでは 多相let の型付けが今までの HM (Hindley Milner) 方式から新しい OutsideIn(X) に変わっています。(言語拡張でどうたらあるらしいがシラネ) 詳しい動機はまあいろいろあるみたいですが GADT とか Type family …

ML系言語の型エラー報告を改良する

さて、お約束していた OCaml の型エラーメッセージ改良のための改造、ある程度形になりましたので、公開します。 hg clone -b typeloc https://bitbucket.org/camlspotter/mutated_ocaml ビルドは configure の後、 make core coreboot world です。インスト…

OCaml の let と let rec はなぜ別扱いになっているのか、決定版、もしくは OCaml 暦十何年だったか忘れたけど仕事で Haskell を一年使ってみた

はじめに断っておくが、全部Pros/Consのあるデザインチョイスなので、こうじゃなきゃいけないってことではない。ただ、 OCaml はこの選択をした、そいう事だ。前回の「経験15年の OCaml ユーザーが Haskell を仕事で半年使ってみた」 http://d.hatena.ne.jp/…

コードを短く書くことと読みやすく書くことは違う

module Z where import Data.Char data Foo = Alpha | Beta | Gamma | Delta | Eta | ... | Omega deriving (Show,Eq,Enum,Bounded) parse internals x = head $ (if all isLower $ take 1 x then [External i | i <- [minBound..maxBound], map toLower (sh…

経験15年のOCaml ユーザーが Haskell を仕事で半年使ってみた

今の会社に移って半年経ちました。めでたく試用期間終了です。といっても別に試用期間中に密かに首を切られるような事をしたとか、逆に試用期間が終わったからと言ってこれで定年までのうのうと働ける、という訳ではありません。未来は全く判りません。まあ…

昔誰かが書いたけど誰も読まなかった「若いλ彦」

半年ほど前に、誰かがベロベロに酔っ払ってただ勢いで書いたゴミをさっき見つけました。すいません。今日はこれで許してください。今月はしょうもないことでも出きるだけ毎日出して行きたいと思います。 「若いλ彦」 http://anond.hatelabo.jp/2010061123231…

高階関数パズルの解説

前回の日記でこのような問題を出しました: 問題 次の twice 関数は、第一引数である関数 f を第二引数 x に二回適用する高階関数です。 let twice f x = f (f x) この時、次の各式の結果は以下のようになります: 式 ==> 結果 twice ((+) 1) 0 ==> 2 twice tw…

Haskell のたった一つ、確実に優れているところ

それは、 偉大なるジョン・ハロップ師が既に去られた言語 その事に尽きる。師が興味を持たれた言語コミュニティーは荒れる。何故かは判らない。乱あるところすべからく師あり。師の去るところ平和あり。そう、Haskell は既に解放されたのだ。OCaml も数年前…

offside-trap.el : for Haskell block indentation

前回までのあらすじ:Haskell など OCaml に毛が生えたようなもの、ふふん、と、転職した俺様だったが、なんということだ、Haskell が、というか、インデントが読めない。深すぎて。どうしたらいいんじゃー!!http://d.hatena.ne.jp/camlspotter/20100520/1274…

なぜ Haskell で 1-liner っぽいコードが出来るのか、ちょっと真面目に考えた

というわけで今日は真面目に人の書いた Haskell のコードを読んでいたのです。適せん(どうしても変換できない)コメントや改行を入れつつ。基本的に読みやすいコードなのですが、、、やはり一行 200文字を越える辺りから解読不可能というか恐ろしく読む気が削…

OCaml では Y が書けないのはデマではありません。

OCaml はイカレタ言語なので the Y combinator が書けません: $ ocaml Objective Caml version 3.11.2+ocamlspotter # let y = fun f -> (fun x -> f (x x)) (fun x -> f (x x));; Characters 32-33: let y = fun f -> (fun x -> f (x x)) (fun x -> f (x x)…

彼らはどうやって Haskell プログラムを編集しているのか教えてください

さて、今度の会社は色々と研修や事務手続きなどありまして、さすが巨大な企業です、中々仕事に取り掛かれませんでした。ようやく今日ちょいと Haskell プログラミングの真似事などを始めましたよ。 読めねー いえ、一応私、関数型言語の研究などやっておりま…

Chuck Norris 化する Haskell

こんなん見ました。 Haskell は C よりも早かったりするらしい それはすごい! いくらなんでも Haskell すごすぎる!! そしてそれがホントなら私が昨日からはじめた Haskell 関係のお仕事はなくなって私は馘になります。私も Haskell facts を作りました: Hask…

俺は Haskell の sieve についてとんでもない思い違いをしていたようだ...

,.‐'´ `''‐- 、._ヽ /.i ∠,. -─;==:- 、ゝ‐;----// ヾ.、 [ |、! /' ̄r'bゝ}二. {`´ '´__ (_Y_),. |.r-'‐┬‐l l⌒ | } ゙l |`} ..:ヽ--゙‐´リ ̄ヽd、 ''''  ̄ ̄ |l !ニ! !⌒ // . i.! l .::::: ソ;;:.. ヽ、._ _,ノ' ゞ)ノ./ ええっとこの読みものは昔から思いこんで…

なぜ高スキル者が土方になってしまうのか

2ch Haskell板で土方土方と言われている件に関して。 cで土方やるよりhaskellで土方やる方がまだマシ 何のためにこういう人達は Haskell 勉強してるんだろ、、、土方*1になるため?違うよね。書き込んだ人は本気で土方になりたいと思っている訳では無いだろ…