【^】パターンマッチ【$】

パターンマッチ話の続き.

パターンマッチと単一化


 ()  Prolog 


Erlang, Oz/Mozart, Prolog, 


Erlang

http://blog.livedoor.jp/dankogai/archives/50832431.html

erlang




Variable = Value.


function(Aargument) -> blah, blah, blah.

?


(^O^)

= (^O^)

Prolog(, unification)



HaskellOCamlErlang, Oz/Mozart(MozartOz) PrologPrologProlog

HaskellOCamlErlangProlog

http://www.amazon.co.jp/exec/obidos/ASIN/193435600X/showshotcorne-22/

Joe ArmstrongProgramming Erlang: Software for a Concurrent World = Prolog

 = Oz = OzX, Z, B
[X 'b'Z] = ['a' B 'c'] 

X'a'Z'c'B'b'

= OzMozart


Oz

2.8.2  (entailment)


 (unification)  ︿Term1=︿Term2  0  ︿Term1  ︿Term2  f(X Y) = f(1 2)  2 X=1  Y=2 2


Haskell  Prolog 

4 Case 


 length  fringe ( §3.17 ) ( Haskell  Prolog  Haskell   Prolog () )





ListmapHaskell 98  mapHaskell 98  
map :: (a->b) -> [a] -> [b]
map f []     = []
map f (x:xs) = f x : map f xs

map[](:)pattern matchingPrologunification使



()
 - 

有名言語での実装とかシンタクスとか


 k.inaba 


Extractor (Scala)  [PPT] Active Pattern (F#)  View Pattern (Haskell)  

使い道を考えてみる 1


Kazzzz "" 

n122000


2000 XY
var seq =
    1.UpToInfinity()                      // [1, 2, 3, 4, ...]
     .Select(x => x * x)                  // [1, 4, 9, 16, ...]
     .Scan((sum, x) => sum + x)           // [1, 5, 14, 30, ...]
     .Select(x => x <= 2000?'X' : 'Y'); // ['X', 'X', ..., 'X', 'Y', 'Y', ...]
XXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY.......
                 ^ この位置に対応する数値を求めたい


使い道を考えてみる 2


RDBMS 使 JSON  Bigtable  google:query-by-example
 PowerShell 
ls C:/*/*/f* |
% {switch -regex ($_.FullName) {'(?<drive>.):\\(?<rootdir>.*?)\\(.*?)\\(?<rest>.*)' {$matches}}} |
% {$_['drive'] + ':/' + $_['rootdir'] + '/(snip)/' + $_['rest']}

PowerShell Provider 使使
()