用于定义常量函数的惯用法

时间:2016-05-01 09:03:58

标签: purescript

免责声明:我是purescript的新手,还没有找到令人惊讶但有点压倒性的类型系统。

假设我想要一个忽略其参数的函数,并且总是返回相同的值。手动将其定义为匿名函数不是问题:

(\_ -> 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]

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

1 个答案:

答案 0 :(得分:3)

您需要const功能

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

可用于创建函数:

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