コラッツ予想がとけたらいいな2

自分の考察を書いていきます。

Curry をやってみた その2(双子素数)

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