代码之家  ›  专栏  ›  技术社区  ›  rampion

Haskell:从类型推导函数

  •  3
  • rampion  · 技术社区  · 14 年前

    所以我今天和Haskell一起玩,考虑自动生成给定类型的函数定义。

    例如,函数的定义

    twoply :: (a -> b, a -> c) -> a -> (b, c)
    

    对我来说是显而易见的(如果我排除使用 undefined :: a ).

    ¢ :: a -> (a ->b) -> b
    ¢ = flip ($)
    

    (¢) ¢ ($) :: a -> (a -> b) -> b
    

    =::= x =::= x x ($) 唯一地定义 x ? 必须 x =::= ¢ ?

    推断 x :: a -> (a -> b) -> b ,但陷入了困境。

    3 回复  |  直到 12 年前
        1
  •  8
  •   sepp2k    14 年前

    x =::= x x ($) 同样适用于 x = const ,其类型为 a -> b -> a

        2
  •  8
  •   Carl    14 年前

    我想补充一点,你应该看看 http://hackage.haskell.org/package/djinn

        3
  •  1
  •   sclv    14 年前

    从上面的等式中,我们可以确定x的一些类型签名。x不需要这个类型,但它至少需要

    $ :: forall a b. (a -> b) -> a -> b
    x :: t1 -> ((a -> b) -> a -> b) -> t1