Entries from 2010-11-01 to 1 month

HaskellのfromEnumとtoEnumのまとめ

今更だけど. toEnum および fromEnum 演算子は列挙された値と Int 間の写像である。toEnum は Int の 引数が構成子のインデックスの一つでなければ、実行時エラーを起す。 http://www.sampou.org/haskell/report-revised-j/derived.html こんなふうになる。…

HaskellのリファクタリングツールHaReのインストールと使い方(Emacs,Meadow)

WindowsXPで実行.Haskell Platform 2.0である. emacs(Meadow)をインストール Meadow 2.10 (ASAGAO)をインストールした. http://www.meadowy.org/meadow/wiki/%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89 のnetinstallのsetup-ja.exeをダウン…

文字列と数のタプルのリストを合計する関数

もっといい書き方ないんかいな.Preludeとかで用意されてないのか. union :: [(String,Int)] -> [(String,Int)] -> [(String,Int)] union xs ys = MS.toOccurList $ MS.union (MS.fromOccurList xs) (MS.fromOccurList ys) 入力例. print $ union [("aaa",…

Haskellの中間表現であるCore言語について

Hugs では,読み込んだHaskell プログラムをまずG-code に変換し,その後内部に実装されているG-machine がG-code を解釈実行する流れになっている. 一方GHC では,内部的にCore 言語とSTG 言語(Spineless Tagless G-machine [13] 上の言語) を経由した後,…

Language.Haskell.Exts.Syntaxでの型シグネチャ

isLower :: Char -> Bool TypeSig (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 1, srcColumn = 1}) [Ident "isLower"] (TyFun (TyCon (UnQual (Ident "Char"))) (TyCon (UnQual (Ident "Bool")))) print :: IO () TypeSig (SrcLoc {srcFilename = "<unknown>.hs", srcLi</unknown></unknown>…

SourceGraphでのローカル変数の扱い(その2)

http://d.hatena.ne.jp/hekominn/20101111/1289488129 の続き. ローカルとグローバルの区別をきちんとつけているかということでやってみた. ちゃんと区別ついてたよかった. module Sample1 where local a = 3 test2 x = local where local = x + 1 fromLi…

SourceGraphでのローカル変数の扱い(その1)

SourceGraphでローカルな関数(変数)はどのように解析されるのかということで 以下のを解析してみた. 結論としては,localはどこにも現れなくて,testが+を呼んでるというふうになってた. module Sample1 where test :: Int -> IO Int test x = return lo…

haskell-src-extsでの解析結果その1

以下をHaskell-src-extsで解析した. func = 1 以下のようになった. Module (SrcSpanInfo {srcInfoSpan = SrcSpan {srcSpanFilename = "n/a", srcSpanStartLine = 1, srcSpanStartColumn = 1, srcSpanEndLine = 2, srcSpanEndColumn = 1}, srcInfoPoints = …