【问题标题】:What would the type of the following be?以下是什么类型?
【发布时间】:2019-07-13 12:26:03
【问题描述】:

我刚开始学习新的 Haskell,我正在努力确定以下内容的类型:

    1) one x = [x]
    2) three x = (x,x,x)
    3) first x y = x
    4) mult m n = m*n
    5) [(False,’0’),(True,’1’)]

【问题讨论】:

  • 什么时候可以通过:t(或:type)命令询问GHCi,为什么还要问我们?
  • 我将如何在终端中使用它?
  • 听起来你真的没有学过最基本的东西。你读过《Learn You a Haskell》的第 1 章吗? learnyouahaskell.com/starting-out [如果你还没有下载 GHC,你必须回到介绍部分。]顺便说一下,整本书是对 Haskell 的一个很好的介绍(这是我开始的,fwiw)。
  • 作为我上一条评论的后续,我刚刚意识到类型和:t 命令直到下一章(“类型和类型类”)才会涉及
  • 我明白了,非常感谢,我刚开始学习,所以这会很有帮助

标签: haskell types


【解决方案1】:
  1. one x = [x] 是一个接受一个元素并返回一个仅包含该元素的列表,因此它的类型为 one :: a -> [a]
  2. three x = (x,x,x) 具有普通类型 three :: a -> (a,a,a)
  3. first x y = x 看起来像具有 first :: a -> b -> a 类型的 Prelude 函数 const
  4. mult m n = m*n(*) 具有相同的类型,即(*) :: Num a => a -> a -> a
  5. [(False,’0’),(True,’1’)] 甚至不是函数,所以有简单类型 :: [(Bool, Char)]

请记住,您始终可以使用 GHCi 函数 :t 来返回表达式的类型

【讨论】:

  • 请阅读stackoverflow.com/help/how-to-answer,尤其是关于回答好问题的部分。
  • @chepner 你是说我不应该回答,因为它要问多个问题?
  • 是的,链接的常见问题解答非常明确:“避免尝试回答......要求回答多个问题的问题。”
  • @chepner 谢谢,我是该网站的新手,所以我认为他们算作一个问题,因为它基本上都是同一个主题
  • 这样的问题通常是作业转储:否则他们为什么要询问没有上下文的随机表达式列表的类型?
猜你喜欢
  • 2015-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-20
  • 2022-10-04
  • 2015-06-07
  • 2015-02-11
  • 2016-08-26
相关资源
最近更新 更多