mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -06:00
27 lines
588 B
Haskell
27 lines
588 B
Haskell
module TransferDef where
|
|
|
|
import PGF (Tree)
|
|
import Query -- generated from GF
|
|
|
|
transfer :: Tree -> Tree
|
|
transfer = gf . answer . fg
|
|
|
|
answer :: GQuestion -> GAnswer
|
|
answer p = case p of
|
|
GOdd x -> test odd x
|
|
GEven x -> test even x
|
|
GPrime x -> test prime x
|
|
|
|
value :: GObject -> Int
|
|
value e = case e of
|
|
GNumber (GInt i) -> fromInteger i
|
|
|
|
test :: (Int -> Bool) -> GObject -> GAnswer
|
|
test f x = if f (value x) then GYes else GNo
|
|
|
|
prime :: Int -> Bool
|
|
prime x = elem x primes where
|
|
primes = sieve [2 .. x]
|
|
sieve (p:xs) = p : sieve [ n | n <- xs, n `mod` p > 0 ]
|
|
sieve [] = []
|