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の色々メモ

httpdが初期設定では起動しない

# /etc/init.d/httpd start

システム->管理->サーバー設定->サービス でいじると毎回起動するようになる

mysqlが初期設定では起動しない

/etc/init.d/mysqld start

システム->管理->サーバー設定->サービス でいじると毎回起動するようになる

自動ログイン

http://www.karacrix.jp/g2/guide2-4-c5-arun.htm
のままやったらできた

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

下準備

moodlePHPのバージョンが5.2系列でないといけないらしい.
しかしCentOSyumで入るのは5.1系列なのでまずアップデートした.

PHPのアップデート)
# wget -q -O – http://www.atomicorp.com/installers/atomic.sh | sh
# yum update

http://vps.fean.info/archives/server410.html

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      

インストール

参考サイト:http://kilin.clas.kitasato-u.ac.jp/howto/moodle.html

Apacheの設定

httpd.conf のDirectoryIndex に index.php を追加し,その下の行にAcceptPathInfo on を追加.

        # vi /etc/httpd/conf/httpd.conf

        #DirectoryIndex index.html index.html.var
        DirectoryIndex index.php index.html index.html.var
        #
        AcceptPathInfo on
        #

起動

        # /etc/init.d/httpd start

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 '???';

moodleインストール2

php_extension mbstring 最適な動作のため、インストールおよび有効化してください。

サイトパフォーマンスを改善するため、mbstringライブラリのインストールおよび稼動を強くお勧めします。あなたのサイトがラテン文字以外をサポートしている場合、特にお勧めします。
チェック
php_extension xmlrpc 最適な動作のため、インストールおよび有効化してください。

任意のxmlrpc拡張モジュールのインストールはMoodleネットワーキング機能に有用です。
チェック

# yum install php-mbstring
# yum install php-xmlrpc

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 [])]