gpt4 book ai didi

haskell - bi f a b = (f a, f b) 的通用变体

转载 作者:行者123 更新时间:2023-12-03 21:50:08 24 4
gpt4 key购买 nike

是否有任何类型安全的方法来编写函数

bi f a b = (f a, f b)

这样就可以像这样使用它:
x1 :: (Integer, Char)
x1 = bi head [2,3] "45"

x2 :: (Integer, Char)
x2 = bi fst (2,'3') ('4',5)

x3 :: (Integer, Double)
x3 = bi (1+) 2 3.45

?
在 rank-n-types 示例中,总会有一些更简单的东西,例如
g :: (forall a. a -> a) -> a -> a -> (a, a)
g f a b = (f a, f b)

最佳答案

{-# LANGUAGE TemplateHaskell #-}

bi f = [| \a b -> ($f a, $f b)|]
ghci> :set -XTemplateHaskell 
ghci> $(bi [|head|]) [2,3] "45"
(2,'4')

;)

关于haskell - bi f a b = (f a, f b) 的通用变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10772121/

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