gpt4 book ai didi

Haskell - 不能运行简单的程序

转载 作者:行者123 更新时间:2023-12-04 15:04:47 25 4
gpt4 key购买 nike

我正在尝试运行一个简单的 Haskell 程序。
这是代码:

{-# LANGUAGE OverloadedStrings #-}
module Lib
( someFunc
) where

import qualified Data.Text.IO as T

someFunc :: IO ()
someFunc = T.putStrLn "someFunc1"

lucky :: (Integral a) => a -> String
lucky 7 = "LUCKY NUMBER SEVEN!"

let a = lucky 7

putStrLn a
当我尝试使用以下命令编译程序时: stack build错误是:
    parse error (possibly incorrect indentation or mismatched brackets)
|
16 | putStrLn a
| ^
我正在关注 http://learnyouahaskell.com/chapters 上的指南但这都是基于使用 REPL,而我想在 IDE 中产生可重现的结果。我正在为 IntelliJ 使用 Haskell IDE 并使用 stack new first-project 创建项目以下指南来自 https://docs.haskellstack.org/en/stable/GUIDE/ .
如何编译和运行这个 Haskell 程序?
更新 :
使用 pedrofurla 的建议答案,修改后的代码是:
{-# LANGUAGE OverloadedStrings #-}
module Lib
( someFunc
) where

import qualified Data.Text.IO as T

someFunc :: IO ()
someFunc = T.putStrLn "someFunc1"

lucky :: (Integral a) => a -> String
lucky 7 = "LUCKY NUMBER SEVEN!"

a = lucky 7

main = putStrLn a
代码现在编译(使用 stack build)。
在运行代码时(使用 stack exec first-project-exe) 它只输出 "someFunc1"。我期待“幸运数字七!”也可以作为功能打印到屏幕 a由 main 调用:
main = putStrLn a
我错过了一步吗?

最佳答案

如果删除 let关键字并添加一个主函数,它将起作用:

a = lucky 7

main = putStrLn a
let s 是应该在函数体中使用的表达式。 Haskell 程序需要一个入口点,这就是主要功能。

关于Haskell - 不能运行简单的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66378648/

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