Copyright c 2006 Zhenjiang Hu, All Right Reserved.

Similar documents
Copyright c 2008 Zhenjiang Hu, All Right Reserved.

2

org/ghc/ Windows Linux RPM 3.2 GHCi GHC gcc javac ghc GHCi(ghci) GHCi Prelude> GHCi :load file :l file :also file :a file :reload :r :type expr :t exp

日本内科学会雑誌第97巻第7号

日本内科学会雑誌第98巻第4号

# let st1 = {name = "Taro Yamada"; id = };; val st1 : student = {name="taro Yamada"; id=123456} { 1 = 1 ;...; n = n } # let string_of_student {n

haskell.gby

# let rec sigma (f, n) = # if n = 0 then 0 else f n + sigma (f, n-1);; val sigma : (int -> int) * int -> int = <fun> sigma f n ( : * -> * ) sqsum cbsu

2

y = x 4 y = x 8 3 y = x 4 y = x 3. 4 f(x) = x y = f(x) 4 x =,, 3, 4, 5 5 f(x) f() = f() = 3 f(3) = 3 4 f(4) = 4 *3 S S = f() + f() + f(3) + f(4) () *4

1. A0 A B A0 A : A1,...,A5 B : B1,...,B

Microsoft PowerPoint - ProD0107.ppt

Functional Programming

Ł\”ƒ-2005

第90回日本感染症学会学術講演会抄録(I)

¥×¥í¥°¥é¥ß¥ó¥°±é½¬I Exercise on Programming I [1zh] ` `%%%`#`&12_`__~~~ alse

日本内科学会雑誌第102巻第4号


プログラム

放射線専門医認定試験(2009・20回)/HOHS‐05(基礎二次)

Ⅴ 古陶器にみる装飾技法

O1-1 O1-2 O1-3 O1-4 O1-5 O1-6

相続支払い対策ポイント

150423HC相続資産圧縮対策のポイント

Parametric Polymorphism

ハピタス のコピー.pages

Copyright 2008 All Rights Reserved 2

> > <., vs. > x 2 x y = ax 2 + bx + c y = 0 2 ax 2 + bx + c = 0 y = 0 x ( x ) y = ax 2 + bx + c D = b 2 4ac (1) D > 0 x (2) D = 0 x (3

プログラム


koba/class/soft-kiso/ 1 λ if λx.λy.y false 0 λ typed λ-calculus λ λ 1.1 λ λ, syntax τ (types) ::= b τ 1 τ 2 τ 1

fp.gby

第8回 関数

Programming D 1/15

コンピュータ概論

Copyright 2010 Funai Consulting Co.,ltd. All right reserved. 1

II

ax 2 + bx + c = n 8 (n ) a n x n + a n 1 x n a 1 x + a 0 = 0 ( a n, a n 1,, a 1, a 0 a n 0) n n ( ) ( ) ax 3 + bx 2 + cx + d = 0 4

3 3.1 algebraic datatype data k = 1 1,1... 1,n1 2 2,1... 2,n2... m m,1... m,nm 1 m m m,1,..., m,nm m 1, 2,..., k 1 data Foo x y = Alice x [y] B

Jacques Garrigue

jssst-ocaml.mgp

初心者にもできるアメブロカスタマイズ新2016.pages

- 2 Copyright (C) All Rights Reserved.

「計算と論理」 Software Foundations その4

ユニセフ表紙_CS6_三.indd

e ::= c op(e 1,..., e n ) if e 1 then e 2 else e 3 let x = e 1 in e 2 x let rec x y 1... y n = e 1 in e 2 e e 1... e n (e 1,..., e n ) let (x 1,..., x

抄録/抄録1    (1)V

presen.gby

Copyright All Rights Reserved. -2 -!


IPA:セキュアなインターネットサーバー構築に関する調査

研修コーナー

tnbp59-21_Web:P2/ky132379509610002944

Microsoft Word - 最終版 バックせどりismマニュアル .docx

1. A0 A B A0 A : A1,...,A5 B : B1,...,B

「計算と論理」 Software Foundations その3

パーキンソン病治療ガイドライン2002

bdd.gby

keysql42_usersguide

ML λ λ 1 λ 1.1 λ λ λ e (λ ) ::= x ( ) λx.e (λ ) e 1 e 2 ( ) ML λx.e Objective Caml fun x -> e x e let 1


Microsoft PowerPoint - IntroAlgDs-05-5.ppt

_0212_68<5A66><4EBA><79D1>_<6821><4E86><FF08><30C8><30F3><30DC><306A><3057><FF09>.pdf

untitled

橡点検記録(集約).PDF

Microsoft Word - 触ってみよう、Maximaに2.doc

CGI開発支援解説

第86回日本感染症学会総会学術集会後抄録(I)

ユニセフ表紙_CS6_三.indd

03実習2・松井.pptx

snkp-14-2/ky347084220200019175

untitled

解きながら学ぶJava入門編

情報科学概論 第1回資料

43-03‘o’ì’¹‘®”q37†`51†i„¤‰ƒ…m†[…g†j.pwd

K227 Java 2

2

リバースマップ原稿2

健康保険組合のあゆみ_top

構造化プログラミングと データ抽象

プログラミングD - Java


monad.gby

ML Edinburgh LCF ML Curry-Howard ML ( ) ( ) ( ) ( ) 1

Functional Programming

endo.PDF


2

連載 構文解析器結合子 山下伸夫 (( 株 ) タイムインターメディア ) 文字列の分解 1 1 Haskell lines Prelude lines :: String -> [String] lines "" = [] lines s = let (l,s'

資料5:聖ウルスラ学院英智小・中学校 提出資料(1)

VDM-SL VDM VDM-SL Toolbox VDM++ Toolbox 1 VDM-SL VDM++ Web bool

Œ{Ł¶/1ŒÊ −ªfiª„¾ [ 1…y†[…W ]

本文/扉1

プログラム


平成20年5月 協会創立50年の歩み 海の安全と環境保全を目指して 友國八郎 海上保安庁 長官 岩崎貞二 日本船主協会 会長 前川弘幸 JF全国漁業協同組合連合会 代表理事会長 服部郁弘 日本船長協会 会長 森本靖之 日本船舶機関士協会 会長 大内博文 航海訓練所 練習船船長 竹本孝弘 第二管区海上保安本部長 梅田宜弘

Program

aphp37-11_プロ1/ky869543540410005590


日本内科学会雑誌第96巻第11号

Transcription:

1 2006 Copyright c 2006 Zhenjiang Hu, All Right Reserved.

2 ( )

3 (T 1, T 2 ) T 1 T 2 (17.3, 3) :: (Float, Int) (3, 6) :: (Int, Int) (True, (+)) :: (Bool, Int Int Int)

4 (, ) (, ) :: a b (a, b) (,) x y = (x, y) fst, snd: fst :: (a, b) a fst (x, y) = x snd :: (a, b) b snd (x, y) = y

5 (T 1,..., T n ) 1 T 1 n T n (17.3, 3, True) :: (Float, Int, Bool) (3, 6, 7, 8, 9) :: (Int, Int, Int, Int, Int)

6 n (,..., ) (,..., ) :: a 1 a n (a 1,..., a n ) (,..., ) x 1 x n = (x 1,..., x n ) sel n i : sel n i sel n i :: (a 1,..., a i,..., a n ) a i (x 1,..., x i,..., x n ) = x i

7 ax 2 + bx + c = 0 (a, b, c) (r 1, r 2 ) roots :: (Float, Float, Float) (Float, Float) roots (a, b, c) d 0 = (r 1, r 2 ) where r 1 = ( b + r)/(2 a) r 2 = ( b r)/(2 a) r = sqrt d d = b 2 4 a c

8 x/y (x, y) norm (8, 6) (4, 3) norm :: (Int, Int) (Int, Int) norm (x, y) y 0 = (div u d, div v d) where u = (sign y) x v = abs y d = gcd (abs u) v

9 radd :: (Int, Int) (Int, Int) (Int, Int) radd (x, y) (u, v) = norm (x v + u y, y v) rsub :: (Int, Int) (Int, Int) (Int, Int) rsub (x, y) (u, v) = norm (x v u y, y v) rmul :: (Int, Int) (Int, Int) (Int, Int) rmul (x, y) (u, v) = norm (x u, y v) rdiv :: (Int, Int) (Int, Int) (Int, Int) rdiv (x, y) (u, v) = norm (x v, y u)

10 requals :: (Int, Int) (Int, Int) Bool requals (x, y) (u, v) = x v == y u rless :: (Int, Int) (Int, Int) Bool rless (x, y) (u, v) = x v < y u rgreater :: (Int, Int) (Int, Int) Bool rgreater (x, y) (u, v) = x v > y u

11 showrat :: (Int, Int) String showrat (x, y) = let (u, v) = norm (x, y) in if v == 1 then show u else show u ++ / ++ show v

12 ( ) +,,, /, square, ( ), ord, until,... : d dx ::

13 ( ): ( ) :: (β γ) (α β) (α γ) (f g) x = f (g x) (f g) h = f (g h)

14 equality f = g iff x.f x = g x.

15 f :: A B A x g (f x) = x g f f 1 f :: Int (Int, Int) f x = (sign x, abs x) f 1 :: (Int, int) Int f 1 (s, a) = s a

16 f = f (strict function) square(1/0) = three :: Int Int three x = 3 three (1/0) = 3

17 [α] α [1, 2, 3] :: [Int] [ h, e, l, l, o ] :: [Char] [[1, 2], [3]] :: [[Int]] [(+), ( )] :: [Int Int Int] [ ] :: [a] [1, fine day ]

18 [α] 1. [ ] [α] [ ] [α]. 2. x [α] a α a : x [α] 3. [α] a 0 : (a 1 : ( (a n 1 : [ ]))) [a 0, a 1,..., a n 1 ]

19 [ ] : [ ] :: [α] (:) : (:) :: α [α] [α]

20 head :: [α] α head (a : x) = a tail :: [α] [α] tail (a : x) = x

21 null :: [α] Bool null [ ] = True null (a : x) = False

22 length :: [a] Int length [ ] = 0 length (a : x) = 1 + length x length [1, 2, 4, 3, 3] 5

23 sum :: Num a [a] a sum [ ] = 0 sum (a : x) = a + sum x sum [1, 2, 3, 4, 5] 15

24 ( + ) :: [a] [a] [a] ( + ) [ ] y = y ( + ) (a : x) y = a : (( + ) x y) [1, 2, 3] ++ [4, 5, 6, 7] [1, 2, 3, 4, 5, 6, 7] ( + ) :: [a] [a] [a] [ ] ++ y = y (a : x) ++ y = a : (x ++ y)

25 zip :: [a] [b] [(a, b)] zip [ ] [ ] = [ ] zip (a : x) (b : y) = (a, b) : zip x y : zip [1, 2, 3, 4] [11, 12, 13, 14] [(1, 11), (2, 12), (3, 13), (4, 14)]

26 take :: Int [a] [a] take 0 x = [ ] take (n + 1) [ ] = [ ] take (n + 1) (a : x) = a : take n x : take 3 [1, 2, 3, 4] [1, 2, 3]

27 drop :: Int [a] [a] drop 0 x = x drop (n + 1) [ ] = [ ] drop (n + 1) (a : x) = drop n x : drop 3 [1, 2, 3, 4] [4]

28 map :: (α β) [α] [β] map f [ ] = [ ] map f (a : x) = f a : map f x map square [1, 2, 3, 4] [1, 4, 9, 16]

29 filter :: (α Bool) [α] [α] filter p [ ] = [ ] filter (a : x) = if p a then a : filter p x else filter p x filter even [1, 2, 3, 4] [2, 4]

30 foldr :: (a b b) b [a] b foldr ( ) e [ ] = e foldr ( ) e (a : x) = a foldr ( ) e x foldr ( ) e [a 1, a 1, a 3 ] a 1 (a 2 (a 3 e))

31 foldr sum :: [Int] [Int] sum = foldr (+) 0 produt :: [Int] [Int] product = foldr ( ) 1 and :: [Bool] Bool and = foldr ( ) True or :: [Bool] Bool or = foldr ( ) False

32 concat :: [[a]] [a] concat = foldr ( + ) [ ] reverse :: [a] [a] reverse = foldr postfix [ ] where postfix a r = r ++ [a]

33 foldl :: (b a b) b [a] b foldl ( ) e [ ] = e foldl ( ) e (x ++ [a]) = (foldl ( ) e x) a foldl ( ) e [a 1, a 1, a 3 ] ((e a 1 ) a 2 ) a 3 pack foldl pack [x n, x n 1,..., x 0 ] = x n 10 n + x n 1 10 n 1 + + x 0

34 2.4, 2.5, 2.6, 5.1, 5.2, 5.3