Curry は、パターンマッチの場所に関数を(演算子も)書けるみたいです。
前準備
$ cypm install searchtree $ cypm add searchtree
Prime.curry
module Prime where import Control.Findall (allValues) primes :: [Int] primes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97] getTwin :: [Int] -> (Int, Int) getTwin (_ ++ x : x + 2 : _) = (x, x + 2) getTwinList :: [Int] -> [(Int, Int)] getTwinList = allValues . getTwin
コードが Egison だ Egison 。
実行
$ pakcs Prelude> :l Prime Prime> getTwin primes (3,5) (5,7) (11,13) (17,19) (29,31) (41,43) (59,61) (71,73)
なんかいっぱい出たー
Curry(PAKCS) はパターンにマッチしたものを
全て出力するみたいだ。
リストで出したい場合は関数allValues
を使う。
Prime> getTwinList primes [(3,5),(5,7),(11,13),(17,19),(29,31),(41,43),(59,61),(71,73)]