gpt4 book ai didi

syntactic-sugar - 是否可以在 Idris 的 Idiom Bracket 中使用条件语句?

转载 作者:行者123 更新时间:2023-12-04 13:49:02 34 4
gpt4 key购买 nike

像下面这样的表达式在 Idris 中是完全有效的:

 let x = Just 5 in let y = Just 6 in [|x / y|]

有人能写出如下表达式吗?

let x = Just 5 in let y = Just 6 in [| if x == 0 then 0 else y|]

我似乎无法编译它。

最佳答案

我能够通过解决两个问题来解决这个问题:

  1. if _ then _ else _ 似乎没有将成语括号传播到它的子表达式

  2. if _ then _ else _ 的默认定义(当然)在其两个分支中是惰性的,而 Lazy' LazyEval 似乎不是提升实例。

一旦解决了这两个问题,我就能够让它在成语括号中工作。但是请注意,这对于采用两个分支具有可观察效果的应用程序不起作用。

strictIf : Bool -> a -> a -> a
strictIf True t e = t
strictIf False t e = e

syntax "if" [b] "then" [t] "else" [e] = strictIf b t e

test : Maybe Float
test = let x = Just 5
y = Just 6
in [| if [| x == pure 0 |] then [|0|] else y |]

关于syntactic-sugar - 是否可以在 Idris 的 Idiom Bracket 中使用条件语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27807192/

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