相关疑难解决方法(0)

Haskell中的main函数总是以main = do开头吗?

在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"++名称.

haskell program-entry-point do-notation

5
推荐指数
1
解决办法
1422
查看次数

为什么即使我不应用 f 参数,我也需要在 fmap 的定义中再次调用构造函数?

我不知道为什么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)

另一个问题是,这是否会影响性能,还是仅在编译时才会发生?

haskell functor algebraic-data-types sum-type

5
推荐指数
0
解决办法
105
查看次数