gpt4 book ai didi

haskell - 为什么类型是 Char -> Char -> Char

转载 作者:行者123 更新时间:2023-12-02 17:10:05 26 4
gpt4 key购买 nike

我有以下类型签名:

*Main Lib> let f :: a -> a -> a -> a; f = undefined  
*Main Lib> let x :: Char; x = undefined

为了找出我会得到哪种结果类型,我做了:

*Main Lib> :t f x
f x :: Char -> Char -> Char

为什么不

Char -> Char -> Char -> Char

因为第一个参数已经被 x 替换了?

最佳答案

是的,完全正确。考虑一个不同的函数,length :: [a] -> Int 。如果你询问 length "abc" 的类型,你得到Int :

Prelude> :t length "foo"
length "foo" :: Int

一般来说,如果你有一个函数f :: A -> B和一个论点x :: A ,然后f x :: B .

就您而言,我们有 f :: a -> (a -> a -> a) (专门针对 a = Char ),所以 A = CharB = Char -> Char -> Char .

( a -> a -> a -> aa -> (a -> a -> a) 相同,因为类型中的 -> 是右结合的。)

关于haskell - 为什么类型是 Char -> Char -> Char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42364529/

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