定义常量函数的惯用方式

Idiomatic way to define constant functions

免责声明:我是 purescript 的新手,还没有理解这个惊人但有点难以抗拒的类型系统。

假设我想要一个忽略其参数并且始终returns相同值的函数。手动定义这个为匿名函数是没有问题的:

(\_ -> 42) <$> [true, false]
-- => [42, 42]

但我想知道是否有更惯用(和简洁)的方式来做到这一点。 Data.Const 可能涉及,但我还没有弄清楚如何使用它。 (getConst 42) <$> [true, false] 之类的东西不起作用。

编辑:自己定义:

makeConst :: forall a b. a -> (b -> a)
makeConst x = (\_ -> x)

(makeConst 42) <$> [true, false]
-- => [42, 42]

这很好用,但如果标准模块中存在类似的东西而我根本没有看到它,我不会感到惊讶...

您需要 const 函数

const :: forall a b. a -> b -> a

您可以使用它来创建您的函数:

(const 42) <$> [true, false]