【发布时间】:2014-04-23 14:26:28
【问题描述】:
在 Idris 中将 String 转换为 Integer 或 Natural 的最佳方法是什么?
我知道标准库仍在进行中,所以如果答案是我应该将它添加到标准库中,那很好,我会尝试这样做,但在我想我会确认之前没有一种方式。
如果我想从用户那里读取索引,我能想到的最好方法是这样的:
indexAsString <- getLine
let indexAsInt : Integer = cast indexAsString
let items: Vect _ _ = ["shoe", "bat", "hat"]
let i = integerToFin indexAsInt $ length items
maybe (print "invalid index") (\ii => print $ index ii items) i
但是这样,我没有从演员表中得到失败的迹象。不仅 indexAsString 的格式可能不允许将其转换为整数,而且最重要的是它在运行时甚至不会失败,由于“错误转换”而产生 0。
请告诉我有更好的方法和/或指出正确的方向。
顺便说一句,Idris 中没有 Read 类型类是否有特殊原因?还是只是还没有进入?
提前致谢。
【问题讨论】:
标签: string integer type-conversion idris