gpt4 book ai didi

haskell - 用逻辑构建数据

转载 作者:行者123 更新时间:2023-12-02 21:22:29 25 4
gpt4 key购买 nike

我有这样的数据类型:

data FooBar =
FooBar { foo :: Double
, bar :: Double
, ter :: Double
}

-- hypothetical builder with some random logic
mkFooBar :: Double -> Double -> FooBar
mkFooBar a b
| a < 5 = FooBar a b (a + b)
| a > 100 = FooBar a b (a * b)
| otherwise = FooBar (a ^ 2) (b ^ 2) ((a + b) ^2)

以及程序中使用的一些预定义值,例如:

fBLess5 = mkFooBar 1 200
fBMore100 = mkFooBar 200 200
fBSquared = mkFooBar 50 200
-- and so on

可以像 Haskell 中那样构建预定义值吗?如果fBLess5在程序中使用了N次,那么如果这样写的话,它会被构建N次吗?

最佳答案

这会起作用。通过将值绑定(bind)到名称,您可以确保它仅被评估(最多)一次,然后共享,无论您使用它的频率如何。

(不过有一个异常(exception):

foo :: (Num a) => a
foo = 42

这个明显的常量是多态的,并且会在每次使用时重新计算(它实际上是 fromInteger (42::Integer))。但这不适用于您的代码,它都是单态的。)

关于haskell - 用逻辑构建数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41403910/

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