Haskell赋值类型

来自 haskell.org 网站:每个表达式都有一个类型。那么什么是类型

main = putStrLn "Hello, World!"

我想知道的不是类型main是什么,而是整条线的类型是什么。另外,是否有可能在 ghci 中以某种方式获得这种类型?我试过

:t (main = putStrLn "Hello, World!")

但这不起作用。

回答

main = putStrLn "Hello, World!"表达,并且因此不具有类型。它是一个定义,它为name分配一个 type 值IO ()(由 的求值产生putStrLn :: String -> IO ()main

按照定义,您可以找到 的类型main

> :t main
main :: IO ()


回答

每个表达式都有一个类型。

这是正确的,但声明不是表达式。1+1是一个表达式,a = 1+1表达,但声明。

我想知道的不是 main 的类型是什么,而是整行的类型是什么。

这没有类型,您只需使用给定的表达式定义一个变量。表达式putStrLn "Hello, World!"有 type IO (),因为putStrLn有 type putStrLn :: String -> IO ()


以上是Haskell赋值类型的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>