在java中我们总是写:
public static void main(String[] args){...}
Run Code Online (Sandbox Code Playgroud)
当我们想要开始编写程序时.
我的问题是,对于Haskell,IE是否相同:我是否总是可以确定声明:main = do,当我想在Haskell中为程序编写代码时?
例如:
main = do
putStrLn "What's your name?"
name <- getLine
putStrLn ("Hello " ++ name)
Run Code Online (Sandbox Code Playgroud)
该程序将询问用户"你叫什么名字?" 然后,用户输入将存储在name-variable中,并且在程序终止之前将显示"Hello"++名称.
我不知道为什么fmap _ a = a下面是非法的。这是代码:
data Sum a b = First a | Second b
instance Functor (Sum a) where
fmap f (Second b) = Second (f b)
fmap _ (First a) = First a
fmap _ a = a -- Why can't I do this instead?
Run Code Online (Sandbox Code Playgroud)
另一个问题是,这是否会影响性能,还是仅在编译时才会发生?