1
data MyNum = One
           | Two
           | Three
           deriving (Show, Eq)

我只是MyNum用构造函数定义OneTwoThree

*主要> :t 一

一 :: MyNum

x = read("One")::MyNum但是当我添加到我的程序时 ghci 会产生错误:

没有使用 'read' 产生 (Read MyNum) 的实例</p>

在表达式中: read ("One") :: MyNum

在 'x' 的等式中: x = read ("One") :: MyNum

为什么我做不到read

4

1 回答 1

8

您必须得出以下Read定义MyNum

data MyNum = One
           | Two
           | Three
           deriving (Show, Eq, Read)

x = read("One")::MyNum

*主要> x

于 2016-09-05T06:35:23.573 回答