在 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
但是这样,我没有从 cast 中得到失败的迹象。不仅 indexAsString 的格式可能不允许将其转换为 Integer,而且最重要的是,它甚至不会在运行时失败,由于 "bad cast" 而产生 0。
请告诉我有更好的方法和/或指出我正确的方向。
附带说明一下,Idris 中没有 Read 类型类是否有特殊原因?还是只是还没有进入?
提前谢谢。