gpt4 book ai didi

syntax - Idris 教程 - 中缀形式的命名实现函数

转载 作者:行者123 更新时间:2023-12-01 13:19:10 26 4
gpt4 key购买 nike

我正在阅读 named implementations 的教程, 这给出了 Semigroup Nat举个例子:

[PlusNatSemi] Semigroup Nat where
(<+>) x y = x + y

[MultNatSemi] Semigroup Nat where
(<+>) x y = x * y

如果我想使用 Plus 定义,(<+>) @{PlusNatSemi} Z (S Z)作品。但是有没有办法更中缀地写这个? Z <+> S Z提示缺乏实现,也没有 Z <+> @{PlusNatSemi} S Z也不Z (<+> @{PlusNatSemi}) S Z工作。

最佳答案

在这种情况下,您需要明确定义要使用的命名实现。

但是 Idris 允许命名实现默认在声明 block 中使用 using 表示法。因此,在您的示例中,它将是这样的:

[PlusNatSemi] Semigroup Nat where
(<+>) x y = x + y

[MultNatSemi] Semigroup Nat where
(<+>) x y = x * y

using implementation PlusNatSemi
semiPlus : Nat -> Nat -> Nat
semiPlus x y = x <+> y

using implementation MultNatSemi
semiMul : Nat -> Nat -> Nat
semiMul x y = x <+> y

关于syntax - Idris 教程 - 中缀形式的命名实现函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51412360/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com