【问题标题】:ghci 'Not in scope:' messageghci '不在范围内:' 消息
【发布时间】:2011-03-24 10:19:03
【问题描述】:

我正在学习“向你学习 Haskell”教程,我正在学习这一部分:

lucky :: (Integral a) => a -> String

当我尝试执行这一行时,我得到:

<interactive>:1:1: Not in scope: `lucky'

我做错了什么?

【问题讨论】:

标签: haskell ghci


【解决方案1】:

这不是函数代码,它是函数签名,只能与函数定义一起保存在模块中并加载到 GHCi。

这个签名意味着你要定义一个函数lucky,它得到一个Integer并返回一个String

但是,如果您使用 GHCi 作为交互式解释器来编写函数,则可以让 Haskell 推断函数的类型,例如。 g.:

ghci> let lucky x = show (x + 1)
ghci> :t lucky
lucky :: (Num a) => a -> String

【讨论】:

  • 有没有办法通过模式匹配向 ghci 添加另一个定义。类似let lucky 4 = "four"
【解决方案2】:

如果你想在 GHCI 中尝试,你可以使用多行命令块

:{
lucky :: Int -> String
lucky a = show(a)
:}

:type lucky 
lucky :: Int -> String

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多