字符列表是否与Idris中的字符串不同?

时间:2018-05-08 02:23:33

标签: idris

在Haskell中,以下内容将打印" hello":putStrLn (['h', 'e', 'l', 'l', 'o']),但这会导致Idris中的编译错误:

48 | main = do
   |        ~~ ...
When checking right hand side of main with expected type
        IO ()

When checking an application of function Prelude.Interactive.putStrLn:
        Can't disambiguate since no name has a suitable type:
                Prelude.List.::, Prelude.Stream.::

我怀疑这是因为String是伊德里斯的内置,而不是哈斯克尔。仍然可以在Idris中使用类型类将List Char视为String的实例(String是一个类型类吗?)

1 个答案:

答案 0 :(得分:4)

没错,字符串与Idris中的字符列表不同。但是有些功能允许您将字符列表转换为字符串,反之亦然。

unpack将字符串转换为字符列表

pack函数将可折叠的字符转换为字符串

因此,为了打印字符列表,您只需要:

putStrLn $ pack ['h', 'e', 'l', 'l', 'o']