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 []])) (BDecls []), Match (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 6, srcColumn = 1}) (Ident "perm") [PVar (Ident "xs")] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "concatMap"))) (Var (UnQual (Ident "f")))) (Var (UnQual (Ident "xs"))))) (BDecls [FunBind [Match (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 7, srcColumn = 10}) (Ident "f") [PVar (Ident "x")] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "map"))) (LeftSection (Var (UnQual (Ident "x"))) (QConOp (Special Cons)))) (Paren (App (Var (UnQual (Ident "perm"))) (Paren (App (App (Var (UnQual (Ident "delete"))) (Var (UnQual (Ident "x")))) (Var (UnQual (Ident "xs"))))))))) (BDecls [])]])]
safe p n = all not [ check (i,j) (m,n) | (i,j) <- zip [1..] p ] where m = 1 + length p ----------------- FunBind [Match (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 4, srcColumn = 1}) (Ident "safe") [PVar (Ident "p"),PVar (Ident "n")] Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "all"))) (Var (UnQual (Ident "not")))) (ListComp (App (App (Var (UnQual (Ident "check"))) (Tuple [Var (UnQual (Ident "i")),Var (UnQual (Ident "j"))])) (Tuple [Var (UnQual (Ident "m")),Var (UnQual (Ident "n"))])) [QualStmt (Generator (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 4, srcColumn = 51}) (PTuple [PVar (Ident "i"),PVar (Ident "j")]) (App (App (Var (UnQual (Ident "zip"))) (EnumFrom (Lit (Int 1)))) (Var (UnQual (Ident "p")))))]))) (BDecls [PatBind (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 5, srcColumn = 27}) (PVar (Ident "m")) Nothing (UnGuardedRhs (InfixApp (Lit (Int 1)) (QVarOp (UnQual (Symbol "+"))) (App (Var (UnQual (Ident "length"))) (Var (UnQual (Ident "p")))))) (BDecls [])])]
f1 a1 = a1 ----------------- FunBind [Match (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 24, srcColumn = 1}) (Ident "f1") [PVar (Ident "a1")] Nothing (UnGuardedRhs (Var (UnQual (Ident "a1")))) (BDecls [])]
f2 = 1 + 2 ----------------- PatBind (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 25, srcColumn = 1}) (PVar (Ident "f2")) Nothing (UnGuardedRhs (InfixApp (Lit (Int 1)) (QVarOp (UnQual (Symbol "+"))) (Lit (Int 2)))) (BDecls [])
firstNLines n cs = unlines $ take n $ lines cs ----------------- FunBind [Match (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 26, srcColumn = 1}) (Ident "firstNLines") [PVar (Ident "n"),PVar (Ident "cs")] Nothing (UnGuardedRhs (InfixApp (Var (UnQual (Ident "unlines"))) (QVarOp (UnQual (Symbol "$"))) (InfixApp (App (Var (UnQual (Ident "take"))) (Var (UnQual (Ident "n")))) (QVarOp (UnQual (Symbol "$"))) (App (Var (UnQual (Ident "lines"))) (Var (UnQual (Ident "cs"))))))) (BDecls [])]
firstNLinesParen n cs = unlines (take n (lines cs)) ----------------- FunBind [Match (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 26, srcColumn = 1}) (Ident "firstNLinesParen") [PVar (Ident "n"),PVar (Ident "cs")] Nothing (UnGuardedRhs (App (Var (UnQual (Ident "unlines"))) (Paren (App (App (Var (UnQual (Ident "take"))) (Var (UnQual (Ident "n")))) (Paren (App (Var (UnQual (Ident "lines"))) (Var (UnQual (Ident "cs"))))))))) (BDecls [])]
ramanujan :: [((Int, Int), (Int, Int))] ramanujan = [(x, y) | (x, y) <- zip s (tail s)] where s = fsort sumcubes 1 ----------------- PatBind (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 29, srcColumn = 1}) (PVar (Ident "ramanujan")) Nothing (UnGuardedRhs (ListComp (Tuple [Var (UnQual (Ident "x")),Var (UnQual (Ident "y"))]) [QualStmt (Generator (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 29, srcColumn = 21}) (PTuple [PVar (Ident "x"),PVar (Ident "y")]) (App (App (Var (UnQual (Ident "zip"))) (Var (UnQual (Ident "s")))) (Paren (App (Var (UnQual (Ident "tail"))) (Var (UnQual (Ident "s")))))))])) (BDecls [PatBind (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 30, srcColumn = 9}) (PVar (Ident "s")) Nothing (UnGuardedRhs (App (App (Var (UnQual (Ident "fsort"))) (Var (UnQual (Ident "sumcubes")))) (Lit (Int 1)))) (BDecls [])])
isSophie :: Integer -> Bool isSophie p = let q = 2 * p + 1 in ordElem q primes ----------------- FunBind [Match (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 33, srcColumn = 1}) (Ident "isSophie") [PVar (Ident "p")] Nothing (UnGuardedRhs (Let (BDecls [PatBind (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 33, srcColumn = 18}) (PVar (Ident "q")) Nothing (UnGuardedRhs (InfixApp (InfixApp (Lit (Int 2)) (QVarOp (UnQual (Symbol "*"))) (Var (UnQual (Ident "p")))) (QVarOp (UnQual (Symbol "+"))) (Lit (Int 1)))) (BDecls [])]) (App (App (Var (UnQual (Ident "ordElem"))) (Var (UnQual (Ident "q")))) (Var (UnQual (Ident "primes")))))) (BDecls [])]
isHappyNumber n | n <= 0 = error ("isHappyNumber: not a positive integer " ++ show n) | otherwise = let m = sum $ map (\ x -> x * x) $ splitInt n in if m == 1 then True else if m == 4 then False else isHappyNumber m ----------------- FunBind [Match (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 36, srcColumn = 1}) (Ident "isHappyNumber") [PVar (Ident "n")] Nothing (GuardedRhss [GuardedRhs (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 37, srcColumn = 3}) [Qualifier (InfixApp (Var (UnQual (Ident "n"))) (QVarOp (UnQual (Symbol "<="))) (Lit (Int 0)))] (App (Var (UnQual (Ident "error"))) (Paren (InfixApp (Lit (String "isHappyNumber: not a positive integer ")) (QVarOp (UnQual (Symbol "++"))) (App (Var (UnQual (Ident "show"))) (Var (UnQual (Ident "n"))))))), GuardedRhs (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 38, srcColumn = 3}) [Qualifier (Var (UnQual (Ident "otherwise")))] (Let (BDecls [PatBind (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 38, srcColumn = 23}) (PVar (Ident "m")) Nothing (UnGuardedRhs (InfixApp (Var (UnQual (Ident "sum"))) (QVarOp (UnQual (Symbol "$"))) (InfixApp (App (Var (UnQual (Ident "map"))) (Paren (Lambda (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 38, srcColumn = 38}) [PVar (Ident "x")] (InfixApp (Var (UnQual (Ident "x"))) (QVarOp (UnQual (Symbol "*"))) (Var (UnQual (Ident "x"))))))) (QVarOp (UnQual (Symbol "$"))) (App (Var (UnQual (Ident "splitInt"))) (Var (UnQual (Ident "n"))))))) (BDecls [])]) (If (InfixApp (Var (UnQual (Ident "m"))) (QVarOp (UnQual (Symbol "=="))) (Lit (Int 1))) (Con (UnQual (Ident "True"))) (If (InfixApp (Var (UnQual (Ident "m"))) (QVarOp (UnQual (Symbol "=="))) (Lit (Int 4))) (Con (UnQual (Ident "False"))) (App (Var (UnQual (Ident "isHappyNumber"))) (Var (UnQual (Ident "m")))))))]) (BDecls [])]
queens number_of_queens = qu number_of_queens where qu 0 = [[]] qu (m+1) = [p++[n] | p<-qu m, n<-[1..number_of_queens], safe p n] ----------------- FunBind [Match (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 4, srcColumn = 1}) (Ident "queens") [PVar (Ident "number_of_queens")] Nothing (UnGuardedRhs (App (Var (UnQual (Ident "qu"))) (Var (UnQual (Ident "number_of_queens"))))) (BDecls [FunBind [Match (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 5, srcColumn = 5}) (Ident "qu") [PLit (Int 0)] Nothing (UnGuardedRhs (List [List []])) (BDecls []), Match (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 6, srcColumn = 5}) (Ident "qu") [PParen (PNPlusK (Ident "m") 1)] Nothing (UnGuardedRhs (ListComp (InfixApp (Var (UnQual (Ident "p"))) (QVarOp (UnQual (Symbol "++"))) (List [Var (UnQual (Ident "n"))])) [QualStmt (Generator (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 6, srcColumn = 29}) (PVar (Ident "p")) (App (Var (UnQual (Ident "qu"))) (Var (UnQual (Ident "m"))))), QualStmt (Generator (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 6, srcColumn = 38}) (PVar (Ident "n")) (EnumFromTo (Lit (Int 1)) (Var (UnQual (Ident "number_of_queens"))))), QualStmt (Qualifier (App (App (Var (UnQual (Ident "safe"))) (Var (UnQual (Ident "p")))) (Var (UnQual (Ident "n")))))])) (BDecls [])]])]
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 "Hoge") [])] []
data Hoge1 = Hoge String ---------------------- DataDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 13, srcColumn = 1}) DataType [] (Ident "Hoge1") [] [QualConDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 13, srcColumn = 14}) [] [] (ConDecl (Ident "Hoge") [UnBangedTy (TyCon (UnQual (Ident "String")))])] []
data Hoge2 = Hoge [String] ---------------------- DataDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 14, srcColumn = 1}) DataType [] (Ident "Hoge2") [] [QualConDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 14, srcColumn = 14}) [] [] (ConDecl (Ident "Hoge") [UnBangedTy (TyList (TyCon (UnQual (Ident "String"))))])] []
data Hoge3 = Hoge String | FOO Int ---------------------- DataDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 15, srcColumn = 1}) DataType [] (Ident "Hoge3") [] [QualConDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 15, srcColumn = 14}) [] [] (ConDecl (Ident "Hoge") [UnBangedTy (TyCon (UnQual (Ident "String")))]), QualConDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 16, srcColumn = 14}) [] [] (ConDecl (Ident "FOO") [UnBangedTy (TyCon (UnQual (Ident "Int")))])] []
data Hoge4 = Hoge [String] Int ---------------------- DataDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 17, srcColumn = 1}) DataType [] (Ident "Hoge4") [] [QualConDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 17, srcColumn = 14}) [] [] (ConDecl (Ident "Hoge") [UnBangedTy (TyList (TyCon (UnQual (Ident "String")))), UnBangedTy (TyCon (UnQual (Ident "Int")))])] []
data Hoge5 = Hoge | Foo | Bar ---------------------- DataDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 18, srcColumn = 1}) DataType [] (Ident "Hoge5") [] [QualConDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 18, srcColumn = 14}) [] [] (ConDecl (Ident "Hoge") []), QualConDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 18, srcColumn = 21}) [] [] (ConDecl (Ident "Foo") []), QualConDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 18, srcColumn = 27}) [] [] (ConDecl (Ident "Bar") [])] []
data Hoge6 a = Hoge | Foo a ---------------------- DataDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 19, srcColumn = 1}) DataType [] (Ident "Hoge6") [UnkindedVar (Ident "a")] [QualConDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 19, srcColumn = 16}) [] [] (ConDecl (Ident "Hoge") []), QualConDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 19, srcColumn = 23}) [] [] (ConDecl (Ident "Foo") [UnBangedTy (TyVar (Ident "a"))])] []
data T = C1 {f :: Int, g :: Float} | C2 {f :: Int, h :: Bool} ---------------------- DataDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 21, srcColumn = 1}) DataType [] (Ident "T") [] [QualConDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 21, srcColumn = 10}) [] [] (RecDecl (Ident "C1") [([Ident "f"], UnBangedTy (TyCon (UnQual (Ident "Int")))), ([Ident "g"],UnBangedTy (TyCon (UnQual (Ident "Float"))))]), QualConDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 22, srcColumn = 10}) [] [] (RecDecl (Ident "C2") [([Ident "f"], UnBangedTy (TyCon (UnQual (Ident "Int")))), ([Ident "h"],UnBangedTy (TyCon (UnQual (Ident "Bool"))))])] []
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") []
(TyList (TyCon (UnQual (Ident "Op"))))
TypeDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 5, srcColumn = 1}) (Ident "Test") []
(TyCon (UnQual (Ident "Hoge")))
TypeDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 6, srcColumn = 1}) (Ident "Test1") [UnkindedVar (Ident "a")]
(TyList (TyVar (Ident "a")))
TypeDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 7, srcColumn = 1}) (Ident "Test2") []
(TyTuple Boxed [TyCon (UnQual (Ident "Cont")),TyCon (UnQual (Ident "String"))])
TypeDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 8, srcColumn = 1}) (Ident "Test3") []
(TyTuple Boxed [TyCon (UnQual (Ident "Cont")),TyList (TyCon (UnQual (Ident "String")))])
TypeDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 9, srcColumn = 1}) (Ident "Test4") []
(TyList (TyTuple Boxed [TyCon (UnQual (Ident "Cont")),TyCon (UnQual (Ident "String"))]))
TypeDecl (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 10, srcColumn = 1}) (Ident "Test5") UnkindedVar (Ident "a")]
(TyVar (Ident "a"))
CentOSの色々メモ
自動ログイン
centos5.5にmoodle1.9のインストール
下準備
moodleはPHPのバージョンが5.2系列でないといけないらしい.
しかしCentOSにyumで入るのは5.1系列なのでまずアップデートした.
(PHPのアップデート)
http://vps.fean.info/archives/server410.html
# wget -q -O – http://www.atomicorp.com/installers/atomic.sh | sh
# yum update
wgetがうまくいかなかったので,オプションつけずにやった.
アップデート後にはそれぞれ以下のバージョンになった.
Updated: mysql.i386 0:5.1.53-2.el5.art perl-Archive-Tar.noarch 1:1.39.1-2.el5.art php.i386 0:5.2.14-2.el5.art php-cli.i386 0:5.2.14-2.el5.art php-common.i386 0:5.2.14-2.el5.art php-ldap.i386 0:5.2.14-2.el5.art spamassassin.i386 1:3.2.5-1.el5.art
インストール
moodleのインストール
Moodle 1.9を http://download.moodle.org/ からダウンロード.
1.9.10+をダウンロードした.
/var/www/htmlに展開(以下では /var/www/html/moodle19).展開コマンドは
# cd
# unzip moodle-weekly-19.zip
# mv moodle /var/www/html/データ用ディレクトリを /var/www/moodledata に設定.apache が読み書きできるようにする.アップロードされたファイルはここに入る.
# cd /var/www/
# mkdir moodledata
# chown -R apache.apache /var/www/moodledata/http://localhost/moodle/install.php にアクセスして日本語を選択したら,GDのところで警告が出たため,以下のことをした.
# yum install php-gd
で,
PHPを再コンパイルせずにGDを有効にできた。php-gdというパッケージがあったのでそれをインストールした後(というかされていた)、 /etc/php.d/gd.ini という設定ファイルがあったので、この中のコメントアウトをはずしたら有効になった。(これはCentOS標準のリポジトリからインストールしたから?)
http://www-section.cocolog-nifty.com/blog/2008/06/moodle.html
とやって,再起動したら警告は出なくなった.
mysql
mysqlがどーたら言われたのでインストール
# yum install mysql-server
MySQLサーバーを動かし,
/etc/init.d/mysqld start
rootユーザのパスワード設定
# mysql -u root
mysql> set password for root@localhost=password('rootパスワード');
mysql> exit;
データベース作成(データベース名 moodle,ユーザ名 moodleuser,パスワード ???)
# mysql -u root -p
mysql> show databases;
mysql> CREATE DATABASE moodle DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodle.* TO moodleuser@localhost IDENTIFIED BY '???';
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 (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 1, srcColumn = 1})
(PVar (Ident "x"))
Nothing
(UnGuardedRhs (NegApp (Lit (Int 3))))
(BDecls []),
PatBind (SrcLoc {srcFilename = "<unknown>.hs", srcLine = 2, srcColumn = 1})
(PVar (Ident "y"))
Nothing
(UnGuardedRhs (InfixApp (Lit (Int 5))
(QVarOp (UnQual (Symbol "-")))
(Lit (Int 6))))
(BDecls [])]