我对榆树(elm-server 0.9.2)很新,我遇到了一个问题,这对我来说已经成了一个障碍。
这是我的问题:
根据version-0.9文档,我应该写一下:
stripCommas str =
case str of
',' :: rest -> stripCommas rest
c :: rest -> c :: stripCommas rest
所以为了测试这个我基本上做了我自己的功能(非常相似:) :):
stripNewLine str =
case str of
'\n' :: rest -> stripNewLine rest
c :: rest -> c :: stripNewLine rest
但他们的摊位失败了,经过一些调试我在javascript中注意到了这一点:
var stripNewLine = function(str){
return function(){
switch (str.ctor) {
case '::':
switch (str._0) {
case Chr '\n':
return stripNewLine(str._1);
}
return _L.Cons(str._0,stripNewLine(str._1));
}_E.Case($moduleName,'between lines 22 and 33')}();};
我对javascript知之甚少,但似乎Chr'\ n'应该是Chr('\ n'),强硬我可能是错的...有人能指出我在正确的方向这里因为我失去了...
答案 0 :(得分:3)
这是一个榆树病毒 - 自最新稳定版本以来已经修复 - 你是对的,它是关于错误生成的Javascript。
此外,您在该公告博客帖子中复制的示例代码中也存在逻辑问题,即它正在执行非详尽的模式匹配。
字符串是字符列表(即String
只是[Char]
),因此正确的模式匹配应处理空列表情况,即:
stripCommas str =
case str of
[] -> str
',' :: rest -> stripCommas rest
c :: rest -> c :: stripCommas rest
main = asText <| stripCommas "1,2,3,4,5"
您可以测试此here(从版本选项中选择“master / HEAD”,这是比具有JS生成错误的当前版本更高的版本)。