gpt4 book ai didi

haskell - 是否可以在 REPL 中定义固定性声明?

转载 作者:行者123 更新时间:2023-12-03 15:09:04 26 4
gpt4 key购买 nike

我喜欢在 REPL 中玩耍,因为它是一种非常快速和简单的尝试新事物的方式。如您所知,该语言的某些方面在 REPL 中与在模块中不同,多行定义就是其中之一。

现在,我想知道是否以及在这种情况下如何在 REPL 中声明运算符固定性。天真的尝试......惊喜......不起作用。

Prelude> let (f · g) x = f(g(x))
Prelude> infixl 7 ·

最佳答案

您可以使用这样的多行定义来声明固定性

>>> :{
>>> let infixl 7 ***
>>> (f *** g) (a,b) = (f a, g b)
>>> :}
>>> (negate *** show) (1,2)
(-1,"2")

编辑:尽管有趣的是,当您向 GHCI 询问该功能时,不会显示固定性
>>> :i ***
(***) :: (a -> a') -> (b -> b') -> (a, b) -> (a', b')
-- Defined at <interactive>:10:8

相比
>>> :i &&
(&&) :: Bool -> Bool -> Bool -- Defined in `GHC.Classes'
infixr 3 &&

关于haskell - 是否可以在 REPL 中定义固定性声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17742112/

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