2010-03-01から1ヶ月間の記事一覧

数値(Numeric)表示関数

The Haskell 98 Report 14数値 14.1 表示関数 Prelude> Numeric.showInt 123 "" -- Int を文字列に "123" Prelude> Numeric.showHex 123 "" -- Int を16進数文字列に "7b" Prelude> Numeric.showOct 123 "" -- Int を8進数文字列に "173" Prelude> Numeric.s…

リスト、タプルで変数を一気に束縛

Ruby で a,b,c = 123,"Hello",'a' と書くと a,b,c にそれぞれに対応する値が設定される。 irb(main):001:0> a,b,c = 123,"Hello",'a' => [123, "Hello", "a"] irb(main):002:0> a => 123 irb(main):003:0> b => "Hello" irb(main):004:0> c => "a" これが Ha…

flip : 引数を逆に適用する関数

flip は二つの引数をとる関数と二つの引数をとってひとつの値を返す。 Prelude> :t flip flip :: (a -> b -> c) -> b -> a -> c 引数の与えた文字列を連結して出力する関数 Prelude> let func a b = a++":"++b Prelude> func "aaa" "bbb" "aaa:bbb" Prelude>…

プログラミング Haskell 読書メモ 5.2 リスト内包表記・ガード

プログラミング Haskell 5.2 リスト内包表記・ガード ガードはリストの前方で生成した値を間引く。 Prelude> [x|x<-[1..10]] [1,2,3,4,5,6,7,8,9,10] Prelude> [x|x<-[1..10], even x] [2,4,6,8,10] Prelude> [x|x<-[1..10], even x, x > 5] [6,8,10] 1からn…

「プログラミング Haskell」 読書メモ

プログラミング Haskell 第5章 リスト内包表記 ghci> [x^2|x<-[1..5]] ーー 1 から 5 のリストの要素 x について二乗した値 [1,4,9,16,25] ghci> [(x,y)|x<-[1..3],y<-[4,5]] [(1,4),(1,5),(2,4),(2,5),(3,4),(3,5)] ghci> [(x,y)|y<-[4,5],x<-[1..3]] [(1,4),…

Haskell の同値判定、比較

リストやタプルも Eq クラス、 Ord クラスのインスタンスでそのまま内部まで同値判定、比較される。 class Eq a where (==) :: a -> a -> Bool (/=) :: a -> a -> Bool class Eq a => Ord a where compare :: a -> a -> Ordering (<) :: a -> a -> Bool (>=)…

カリー化

Haskell のひとつ以上の引数をとる関数はカリー化された関数として定義される。 add :: Int -> Int -> Int -> Int add x y z = x + y + z add1 :: Int -> (Int -> (Int -> Int)) ((add1 x) y) z = x + y + z add と add1 は同等である。 Int -> Int :Intの…

Haskell で GUI

Windows で Gtk2Hs が動きました。 gtk2hs-0.10.1-win32-installer は GHC 6.10.3 が先にインストールされている必要があります。 {- ghc --make -optl-mwindows HelloGtk.hs -o HelloGtk -} import Graphics.UI.Gtk hello :: (ButtonClass o) => o -> IO ()…

Haskell で SQL server に接続

Re: Help on using System.Win32.Com.Automationを参考にSQL server に ADODB 接続してみました。 module Main where import System.Win32.Com import System.Win32.Com.Automation sqlStr = "SELECT count(*) FROM table;" userID = "userName" pass = "pas…

Haskell でオブジェクト指向っぽい書き方。

com-1.2.3 の System.Win32.Com に (#)と(##) が定義されていた。Com.hs infixl 1 # infixl 0 ## --Operators to provide OO-looking invocation of interface methods, e.g., -- -- ip # meth1 args -- | The @#@ operator permits /OO-style/ method appli…

System.Win32.Com をいじってみる(clsidFromProgIDの巻)

clsidFromProgID をちょっといじってみました。 関数の名前が clsidFromProgID なので ProgID から clsid を作る。つまり、"ADODB.connection" が ProgID と言うもので "{00000514-0000-0010-8000-00AA006D2EA4}" が CLSID と言うことでしょうきっと。 GHCi,…

com-1.2.3 をインストール

com-1.2.3 をインストールしようとすると以下のエラーが出ました。 GHC は Gtk2Hs 動作確認の出来ている 6.10.3。 Missing header file: include/WideStringSrc.h Missing C libraries: kernel32, user32, ole32, oleaut32, advapi32「関数型プログラミング…

Cinnamon\Nkf.hs:17:8: parse error on input `import'

Nkfによる文字コード変換ライブラリ Cinnamon-0.2 が GHC 6.10.3 にしたところ、エラーになるようになった。「本物のプログラマはHaskellを使う」・第23回 外部環境のメモリーとHaskellの間の整合性を取る http://itpro.nikkeibp.co.jp/article/COLUMN/20080…