gpt4 book ai didi

haskell - 如何用 ghci 编程 haskell?

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

我一直在阅读一些 Material ,在这里我有一个问题:
我看到一段代码是这样的:

>getNthElem 1 xs = head xs
>getNthElem n [] = error "'n' is greater than the length of the list"
>getNthElem n xs
> | n < 1 = error "'n' is non-positive"
> | otherwise = getNthElem (n-1) (tail xs)

我应该在 ghci 中输入完全相同的所有这些行,还是应该创建一个 .hs 文件并将它们放入,然后将其加载到 ghci 中?

最佳答案

有两种方法可以做到这一点:

  • 通过将标志设置为在 ghci 中使用多行模式:
     Prelude> :set +m
    Prelude> let getNthElem 1 xs = head xs
    Prelude| getNthElem n [] = error "error1"
    Prelude| getNthElem n xs
    Prelude| | n < 1 = error "error2"
    Prelude| | otherwise = getNthElem (n-1) (tail xs)
    Prelude|
    Prelude>
  • 创建一个文件并将其作为模块加载,以访问其中定义的类型和函数
    Prelude> :l myModule.hs

    和文件内容:
    getNthElem :: Int -> [a] -> a
    getNthElem 1 xs = head xs
    getNthElem n [] = error "'n' is greater than the length of the list"
    getNthElem n xs
    | n < 1 = error "'n' is non-positive"
    | otherwise = getNthElem (n-1) (tail xs)

  • 我建议使用第二个选项,因为在 GHCI 中的多行模式下很容易弄乱缩进。此外,请养成在开始定义函数体之前添加类型签名的习惯。

    关于haskell - 如何用 ghci 编程 haskell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25501017/

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