church-encoding相关内容
继上一个关于编写咖喱函数的问题之后,如何创建像球拍一样的咖喱函数,我已经开始为 0、1、2 编写固定大小写 - 它们与教堂数字非常相似,非常简洁.这是我目前所拥有的: (define (curry-0 func)功能)(定义你好(开始(显示“你好!")(换行)))(咖喱-0 你好);你好! (define (curry-1 func)(λ (x)(功能 x )))((咖喱-1 -) 2);-2
..
以下代码旨在将布尔型的Church编码打印为Haskell的Bool: {-#LANGUAGE FlexibleInstances #-} instance Show (t -> t -> t) where show b = show $ b True False 哪个会导致此错误: :4:21: error: • Couldn't match ex
..
我在SML中有此表达式,需要找到它的最通用类型.通过编译器运行时,我得到下面显示的内容.我将如何找到最通用的类型,不仅是此功能,还有其他功能,例如教堂数字功能“二". val one = fn f => (fn x => f x) 为什么是这种类型: ('a -> 'b) -> 'a -> 'b 解决方案 您要做的是,应用名为 一般原则包括三个步骤: 首先,我们为变
..
在Coq中,我可以为长度为n的列表定义教堂编码: Definition listn (A : Type) : nat -> Type := fun m => forall (X : nat -> Type), X 0 -> (forall m, A -> X m -> X (S m)) -> X m. Definition niln (A : Type) : listn A 0 := fu
..
我正在通过软件基础进行工作,目前正在练习中在教堂的数字上.这是自然数的类型签名: Definition nat := forall X : Type, (X -> X) -> X -> X. 我已经定义了类型为nat -> nat的函数succ.我现在想定义一个类似的加法函数: Definition plus (n m : nat) : nat := n nat succ m.
..
我一直在使用free包中Control.Monad.Free中的Free数据类型.现在,我试图将其转换为在Control.Monad.Free.Church中使用F,但不知道如何映射函数. 例如,使用Free的简单模式匹配功能将如下所示- -- Pattern match Free matchFree :: (a -> r) -> (f (Free f a) -> r) -
..
以下是 如何存储Monoidal List功能链的数据? 和 从函数中提取数据没有数组的链条 在此我想对我的问题的贡献者表示敬意和赞赏,特别是@Aadit M Shah和@ user633183 现在,这个问题被打开以澄清差异列表是一个获取列表并在其前面添加列表的函数。例如: const concat = xs => ys => xs.concat(YS
..
我指的是这个问题 type Churchlist tu =(t-> u-> u) - > u-> u [p $ p ]:=λc。 λN。 n [1,2,3]:=λc。 λN。 c 1(c 2(c 3 n)) mapChurch ::(t-> s) - > (Churchlist t u) - > (Churchlist s u) mapChurch f
..
我必须实现haskell map函数才能使用教会列表,它的定义如下: type Churchlist tu = (t-> u-> u) - > u-> u 在lambda微积分,列表编码如下: []:=λc。 λN。 n [1,2,3]:=λc。 λN。 c 1(c 2(c 3 n)) 本练习的示例解决方案是: p> mapChur
..
这是一个有识字的haskell文章。只需将其保存为“ChurchList.lhs”即可运行它。 > { - #LANGUAGE Rank2Types# - } Church编码列表是一种通过功能。它类似于折叠和延续传球的风格。 > newtype ChurchList a = CList {runCList :: forall r。 (a→r→r)→> r -
..
{ - #LANGUAGE RankNTypes# - } import前奏曲隐藏(总和) 类型列表h = forall t。 (h→t→t)→> t - > t sum_ ::(Num a)=>列表a - > a sum_ = \ list - >列表(+)0 toList :: [a] - >列出 toList = \ list cons nil
..
我试图在Haskell中实施教会数字,但我遇到了一个小问题。 Haskell抱怨无限类型: 发生检查:无法构造无限类型:t =(t - > t1) - >(t1 - > t2) - > t2当我尝试做减法时, 。我99%肯定我的lambda微积分是有效的(尽管如果不是,请告诉我)。我想知道的是,是否有任何事情可以让haskell在我的函数中工作。 module教会其中 类型
..
dlist包包含 DList 数据类型,其中包含大量实例,但不包含 Foldable 或 Traversable 。在我看来,这些是最“类似列表”类型中的两个。是否有一个性能原因, DList 不是这些类的实例?另外,该包还实现了 foldr 和 unfoldr ,但没有其他折叠功能。 [a] ,它在逆变位置有一个 a ,所以它不能实现 Foldable 或 Traversable ,甚至可
..
我想在多态lambda演算中实现对的教会编码 Haskell。 在第77页8.3.3节彼得塞林格关于lambda微积分的笔记,他给出了两种类型的笛卡尔乘积的构造: $ b A×B =∀α。(A→B→α)→α ⟨M,N⟩=Λα.λfA→B→α.fMN 另一个来源,在第54页, DiderRémy关于lambda微积分的笔记,他将多态λ-演算/系统F中的对的Church编码定义为
..
我在Swift 2.1中编写函数式编程,试图实现教会编码对/利弊功能(缺点 =λxλyλffxy in untyped lambda微积分),我有阅读无法在早期版本的Swift中完成。使用 org / wiki / Generic_programming“rel =”nofollow“>泛型它看起来像 func cons (x:S,_y:T)→> ((S,T)→U)→> U {
..
我一直在尝试如何在Scala中实现Church编码的数据类型。看起来它需要rank-n类型,因为你需要一个 const 类型的函数forAll。 a - >然而,我能够这样编码对: $ b $(对于所有b。b - > b)。 import scalaz._ trait Compose [F [_],G [_]] {type Apply = F [G [ A]]} trait Cl
..
我已经看到了Church数以下数据构造 数据纳特=零| SUCC纳特显示派生 但是,这是一元的数字。 我们如何以这种方式实施在Haskell二进制数数据构造? 我已经试过这样:数据斌=零|一个| BINC [斌]推导展 在此,我们可以得到,小数5间codeD为 BINC [大,零,一] 但我觉得我在这里失去了一些东西。我的解决方案似乎并不像教会的解决方案一样聪明。毫不奇怪,我不是教堂
..