作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个数据类型:
data Teletype a = End a
| Get (Char -> Teletype a)
| Put Char (Teletype a)
该类型的值可用于描述读写字符的程序,并返回 a
类型的最终结果。 。这样的程序可以立即结束( End
)。如果它读取一个字符,则程序的其余部分将被描述为取决于该字符的函数( Get
)。如果程序写入一个字符( Put
),则会记录要显示的值和程序的其余部分。
我必须编写一个电传打字机程序 getLine
它读取字符直到找到换行符,然后返回完整的字符串。到目前为止,我有这个:
getline = Get (\c -> if c == "\n" then (Put c (End c)) else getline )
但它无法编译,因为
Couldn't match expected type ‘Char’ with actual type ‘[Char]’
• In the second argument of ‘(==)’, namely ‘"\n"’
In the expression: c == "\n"
In the expression: if c == "\n" then (Put c (End c)) else getline
最佳答案
c
是一个 Char
,事实上,数据构造函数表示 Get (Char -> Teletype a)
。 "\n"
不是 Char
,而是 String
(因此 [Char]
)。
您可以通过与 '\n'
进行比较(注意单括号)来与新行进行比较:
getline :: Teletype Char
getline = Get (\c -> if c == <b>'\n'</b> then Put c (End c) else getline)
正如 @chi 所说,这不是练习的完整解决方案。这修复了本地问题,以便您可以继续解决它。
关于haskell - Teletype IO getLine 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57856241/
我有这个数据类型: data Teletype a = End a | Get (Char -> Teletype a) | Put Char (Tel
我正在尝试重现 the post 中的 qemu hello-word 示例.代码似乎没有太多错误空间: # boot.asm .code16 .global init # makes o
我是一名优秀的程序员,十分优秀!