研究

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のリファクタリングツール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をダウン…

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

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…

Moodleのインストール

環境:Ubuntu10.10参考サイト http://moodle.org/mod/forum/discuss.php?d=156594 http://docs.moodle.org/ja/Moodle%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB Ubuntu10.10のインストール http://www.ubuntu.com/desktop/get-ubuntu…

穴を開ける箇所

最初,穴を開ける箇所は「理解が困難な点」が良いと考えていた.穴を開ける箇所は「「重点的に空欄補充問題を解くことで理解しているか確認したり理解を強化したい箇所」である.しかし,@yfkkと議論していくうちに,「重点的に空欄補充問題を解くことで理解…