我已经获得了以下compdata示例代码
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE TemplateHaskell #-}
module Web.Rusalka.Hello (
iB, iV, Z) where
import Data.Comp
import Data.Comp.Ops
import Data.Comp.Show ()
import Data.Comp.Derive
data B e = B Bool
data V a e = V a
type Z a = Term (B :+: V a)
$(derive [makeFunctor, makeTraversable, makeFoldable,
makeEqF, makeShowF, smartConstructors, smartAConstructors,
makeArbitrary, makeArbitraryF]
[''B, ''V])
(你会注意到,事实上,Z中的所有内容都是叶子节点。)
现在,据我所知,这创造了两个函数,iB和iV,可用于创建(Z a)s。但是,我无法想象我的生活 如何创建,例如(Z Int)。我需要投入什么? (或者我误解了什么?)
答案 0 :(得分:1)
iB True :: Z Int
或iV (1 :: Int) :: Z Int
在此模块中生成有效的可打印表达式。