【发布时间】:2017-03-29 17:36:55
【问题描述】:
为什么函数read 无法解析其参数时会终止可执行文件?
在我看来,拥有String -> Maybe a 类型的函数会更方便,如果无法将字符串解析为a 类型,则返回Nothing,但我找不到任何东西喜欢它。我错过了什么?
【问题讨论】:
-
我对 Haskell 了解不多,但我无法理解
read函数如何是纯粹的:根据定义,它具有显着的副作用。 -
@BasileStarynkevitch
read不从输入中读取;它只是将其参数转换为String(如 Python 的__str__方法)。 -
它是 Prelude 中的几个函数之一(包括
head和tail),这些函数本来可以是全部的,但为了简单起见被定义为部分函数。 -
@BasileStarynkevitch 为什么你认为解析字符串需要显着的副作用?
-
@chepner Nitpick:我认为您描述的是
show,而不是read,这是相反的方向。仍然是一般观点:read从String转换为某种类型,但不执行任何输入/输出。
标签: haskell casting functional-programming