相关疑难解决方法(0)

如何编写一个以可变函数作为参数的Haskell函数

我正在尝试创建一个函数,它将一个可变函数作为参数,即

func :: (a -> ... -> a) -> a
Run Code Online (Sandbox Code Playgroud)

我怎么能做到这一点?

我已经阅读了关于多变量函数的信息,我确信Oleg已经做到了,但是我试图将这个模式应用于具有可变函数作为参数的函数.特别是Olegs方法似乎只适用于格拉斯哥扩展,我希望解决方案在纯Haskell 98中工作(就像Text.Printf一样).

我问的原因是我正在尝试构建一个函数,该函数将布尔函数作为参数并检查它是否是重言式,即

isTautology :: (Bool -> ... -> Bool) -> Bool
Run Code Online (Sandbox Code Playgroud)

所以可以输入:

isTautology (\x -> x && not x)
isTautology (\x y -> x && y || not y)
Run Code Online (Sandbox Code Playgroud)

我的问题是,我一直在阅读的技巧是使返回类型成为一个类型变量(这样它可以是结果或另一个函数),但我的返回类型是固定的(Bool).

lambda haskell variadic-functions

43
推荐指数
1
解决办法
2173
查看次数

Haskell FlexibleInstances是该语言的稳定扩展吗?

Haskell中的FlexibleInstances有什么问题?为什么他们不包含在Haskell 2010中?FlexibleInstances的实现是不是足够稳定以包含在标准中,还是与FlexibleInstances相关的更深层关注?使用它们是否安全?他们可能会被纳入Haskell Prime吗?

haskell ghc

26
推荐指数
1
解决办法
2381
查看次数

标签 统计

haskell ×2

ghc ×1

lambda ×1

variadic-functions ×1