通过某种转换来“提升”Haskell 中二元函数的两个参数,最惯用的方法是什么?

问题描述 投票:0回答:1

通过某种转换来“提升”Haskell 中二元函数的两个参数,最惯用的方法是什么?让这个运算符被命名为“lift”,所以我预计它的类型将是

lift :: (a -> b) -> (b -> b -> c) -> (a -> a -> c)

一个幼稚的定义是

lift t f = \x y -> f (t x) (t y)
haskell functional-programming
1个回答
15
投票

它被称为

on
(来自
Data.Function
),尽管有翻转的参数:

on :: (b -> b -> c) -> (a -> b) -> a -> a -> c
-- lift = flip on

请注意,您可以通过 Hoogλe 查询轻松找到该函数。另请注意,已经有一个函数

lift
,它用于完全其他的设置,即 monad 转换器。

© www.soinside.com 2019 - 2024. All rights reserved.