当我使用Functors,Monads和其他Hakell构造时,如果我的代码不仅仅是几行,我更喜欢使用一些语法糖,如do-notation.这使我更容易遵循代码流程.除了风格偏好之外,使用脱糖块而不是含糖替代品是否有任何真正的优势?
第4.3.3节和附录F的的XML 1.0规范关于说话UTF-16中,字节顺序标记(BOM)中UTF-16的编码数据流,和XML编码声明.根据这些部分中的信息,UTF-16文档中似乎需要字节顺序标记.但附录F中的摘要图表给出了UTF-16输入没有字节顺序标记的情况,但此方案具有xml声明.根据4.3.3节,UTF-16编码的文档不需要编码声明(在这种情况下,XML声明本身是可选的).
鉴于此信息,是一个UTF-16 xml文档,既没有BOM也没有XML声明,如果文档的其余部分是?缺少外部提供的编码信息,这些信息被认为是格式良好的?
我希望使用IO功能获取输入文本Data.Text.我的quandry与编码发现有关.也就是说,如果我之前没有意识到文本Data.Text的编码,那么在读取的文本的编码与系统区域设置不同的情况下,如何使用IO 呢?在某处有编码发现机制Data.Text吗?
我知道我可能会得到一堆说"使用Data.ByteString" 的回复,但是不是Data.Text为了远离Data.ByteString用于阅读文本的目的而创建的?
另外,如果我必须使用Data.ByteString,有没有人知道当读取八位字节0x80到0x9f时会发生什么?它们是否像其他输入那样按预期读入?它们在ISO-8859-1中未定义,并且Data.ByteStringIO似乎表明输入被视为源是ISO-8859-1.
我一直在修改用haskell编写的编译器的开发,我想在我的'droid上这样做.现在我知道我可能无法获得一个功能齐全,支持cabal的开发环境,但是一个执行数据类型,类型类和原始文件的解释器似乎没有太多要求(或者它是什么?).任何人都能说出他们这样做的经历吗?
提前致谢.
Haskell解析器/组合器Parsec支持来自Data.ByteString和的输入流Data.Text.是否有计划在未来的版本中为这些类型添加更多支持?组合器(很多,sepby,string ......)似乎是围绕列表设计的,首先使用ByteStrings和Text的原因是绕过列表的使用.我知道大多数都会转换为一个包,因此列表将被垃圾收集,但这不仅仅是Text/ByteString的中途支持吗?不应该有一个Data.Parsec.Text.Combinator和一个Data.Parsec.ByteString.Combinator?
关于Control.Applicative,如果我有以下表达式:
f = (expr1 <|> expr2) <* expr3
Run Code Online (Sandbox Code Playgroud)
括号是否必要?也就是说,expr3无论采用哪个分支,都会得到评估(并抛弃)?
haskell ×5
applicative ×2
android ×1
bytestring ×1
functor ×1
interpreter ×1
io ×1
monads ×1
parsec ×1
unicode ×1
utf-16 ×1
w3c ×1
xml ×1