相关疑难解决方法(0)

在Haskell中创建一个Read实例

我有一个数据类型

data Time = Time {hour :: Int,
                  minute :: Int
                 }
Run Code Online (Sandbox Code Playgroud)

我为其定义了Show的实例

instance Show Time where
  show (Time hour minute) = (if hour > 10
                             then (show hour)
                             else ("0" ++ show hour))
                            ++ ":" ++
                            (if minute > 10
                             then (show minute)
                             else ("0" ++ show minute))
Run Code Online (Sandbox Code Playgroud)

以格式打印出时间07:09.

现在,Show和之间应该是对称的Read,所以在阅读(但不是真正的(我认为)理解)这个这个,并阅读文档后,我想出了以下代码:

instance Read Time where
  readsPrec _ input =
    let hourPart = takeWhile (/= ':')
        minutePart = tail …
Run Code Online (Sandbox Code Playgroud)

parsing haskell typeclass symmetry

19
推荐指数
2
解决办法
7257
查看次数

如何在Haskell中实现词法分析器和解析器

我在这里得到了这段代码,它是一个用Haskell构造的命令式编程语言编写的程序,所以问题是"如何为这种语言实现词法分析器和解析器",该程序被定义为一个序列其中有6种类型的语句:":=","goto","write","stop","if goto"和"int"

  1. int n = 5
  2. int fac = 1
  3. if0 n转到8
  4. fac:= fac*n
  5. n:= n-1
  6. 转到4
  7. 写fac

我有点迷失在这里,我读过有关词法分析器和解析器的内容,但是没有找到任何示例如何实现它们,如果你能给我一段代码我会很感激,所以我可以尝试自己做,或者至少链接有用的信息

haskell

3
推荐指数
1
解决办法
4412
查看次数

标签 统计

haskell ×2

parsing ×1

symmetry ×1

typeclass ×1