C++のコンパイラ

C++

GCCでいけると思ってたら, G++とかいうコンパイラを使うらしい.

haskell-src-extsの関数の解析結果

perm [] = [[]] perm xs = concatMap f xs where f x = map (x :) (perm (delete x xs)) ----------------- FunBind [Match (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 5, srcColumn = 1}) (Ident "perm") [PList []] Nothing (UnGuardedRhs (List [List []])</unknown>…

haskell-src-extsのdataの解析結果

data Hoge = Hoge ---------------------- DataDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 12, srcColumn = 1}) DataType [] (Ident "Hoge") [] [QualConDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 12, srcColumn = 13}) [] [] (ConDecl (Ident "Hog</unknown></unknown>…

haskell-src-extsのtypeの解析結果

type Cont = [Op] type Test = Hoge type Test1 a = [a] type Test2 = (Cont, String) type Test3 = (Cont, [String]) type Test4 = [(Cont, String)] type Test5 a = a TypeDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 4, srcColumn = 1}) (Ident "Cont"</unknown>…

CentOSの色々メモ

httpdが初期設定では起動しない # /etc/init.d/httpd startシステム->管理->サーバー設定->サービス でいじると毎回起動するようになる mysqlが初期設定では起動しない /etc/init.d/mysqld startシステム->管理->サーバー設定->サービス でいじると毎回起動…

centos5.5にmoodle1.9のインストール

下準備 moodleはPHPのバージョンが5.2系列でないといけないらしい. しかしCentOSにyumで入るのは5.1系列なのでまずアップデートした. (PHPのアップデート) # wget -q -O – http://www.atomicorp.com/installers/atomic.sh | sh # yum update http://vps.…

Haskell-src-extsにおけるマイナスの扱い

マイナスはどうなってんのかなということで解析. 結果として別々である. x = -3 y = 5 - 6 Module (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 1, srcColumn = 1}) (ModuleName "Main") [] Nothing (Just [EVar (UnQual (Ident "main"))]) [] [PatBind (SrcL</unknown>…

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 = …

遅延パターン

値v の˜pat に対するマッチングはpat が何であってもいつも成功する.操作論の観点からいうとpat のなかの識別子が右辺で「使用」されるとすると,それはv がpat にマッチすると仮定した場合の値に束縛されるか,さもなければ, ⊥ となる. f z (1:y) = prin…

lines関数の動作

SOEに出てきたlines関数の改行あたりの動作の理解が怪しかったのでトレース.ソースを以下に示す.Hugsと同じだった. lines :: String -> [String] lines "" = [] lines s = let (l,s') = break ('\n'==) s in l : case s' of [] -> [] (_:s'') -> lines s'…

SourceGraphでのclass,instanceに対する解析結果

topEntsには含まれないから,そこの数を数えたら関数の数になるはず. class Eq a where (==),(/=) :: a -> a -> Bool x /= y = not (x == y) instance Eq Bool where False == False = True True == True = True _ == _ = False instance Eq Char where c =…

SourceGraphでの型宣言に対する解析結果(read "False" :: Boolみたいなの)

read "False" :: Boolとかに対して,SourceGraphで解析するとどうなるかのまとめ.結論としては,Boolの部分は全く解析結果に反映されない. module Main where dt = pi/8 :: Float fromList [ (LocalMod {modName = "Main"}, PM {moduleName = LocalMod {mo…

SourceGraphでの解析結果(data宣言の場合)その2

同じ関数内で同じデータ型を複数回使った場合ちゃんと回数はわかるのか,ということと,データコンストラクタが複数ある場合はちゃんと型コンストラクタもわかるのかということでやってみた. module Main where data Person = Man String | Woman String de…

SourceGraphでの解析結果(data宣言の場合)その1

$ ghci Prelude> :l Main *Main> parseHaskellFiles ["../main.hs", "../math.hs"]としてSourceGraphで以下のMainを解析. module Main where data Person = P String deriving Show main = print (P "tarou") 解析結果 fromList [ (LocalMod {modName = "Ma…

使用しているhaskell-src-extsとSourceGraphのバージョン

両方とも10/10/20(水)の最新版を使用.haskell-src-extsのほうは $ ghc-pkg.exe listで確認. SourceGraphのほうは生成したHTMLに書いてある. haskell-src-exts-1.9.4 Analysed by SourceGraph (version 0.6.1.1) using Graphalyze (version 0.10.0.1)

haskell-src-etxsのFunBindとPatBindの違い

FunBindは関数本体に引数があって,PatBindはない.FunBindの例 func = ...PatBindの例 func a b = ...

Haskellの空行とコメント行(--のみ)を除いた行数の数え方

$ grep -v ^$ ファイル名 | awk '$0 !~ /^--/{print $0}' | wc コメントが行頭から始まっている場合のみその行が除かれる. 参考: http://uyota.asablo.jp/blog/2008/12/27/4029056 % awk '$0 !~ /^#/{print $0}' input.txtawkのサンプル.!~ 演算子を用い…

SourceGraphでの解析結果(type宣言の場合)その1

type宣言でできた型は関数の本体では使われない.よってSourceGraphでは解析されない. 関数の本体は0個でOK.関数の型宣言とかクラスのメソッドとかになると解析する必要がある.その際にSourceGraphがどうなってるかは調べる必要がある. 追記 readとかのと…

SourceGraphでの解析結果(newtype宣言の場合)その1

data宣言と変わらんっぽい. http://d.hatena.ne.jp/hekominn/20101020/1287582845 と以下のを比較すると変わらない. module Main where newtype Person = Man String func = (Man "tarou") fromList [ (LocalMod {modName = "Main"}, PM {moduleName = Loc…

SourceGraphでの関数の型宣言の扱い

全く解析してないっぽい.試しに,以下の2つを解析してみたけど結果は両方同じだった. module Main where data Person = Man String func (Man name) = name module Main where data Person = Man String func :: Person -> String func (Man name) = name

SourceGraphでの解析結果(data宣言の場合)その3

左辺でdata宣言の型を使用したら,データコンストラクタの使用回数に数えられるか実験. 結論としてはちゃんと数えられてる. module Main where data Person = Man String func (Man name) = name fromList [ (LocalMod {modName = "Main"}, PM {moduleName…

Eclipseのキーバインディング

コマンド「前を削除」をCtrl-Hにする. 「検索ダイアログを開く」がCtrh-Hになってるのでアンバインド.

eclipsefpでHaskellの実行パスの設定

実行->実行構成->作業ディレクトリ C:\tools\eclipse-haskell\workspace\Testと,作業ディレクトリを指定する. Test/src/main.hsを指定する場合は以下のようにする src <- readFile "src/main.hs"