【问题标题】:Can't replace in Haskell无法在 Haskell 中替换
【发布时间】:2016-12-06 20:49:25
【问题描述】:

我正在尝试从文件中读取字符串,它工作正常。但是试图用任何东西替换标点符号来删除它们,它总是给我同样的信息。 到目前为止,我的程序部分如下所示:

module HA

where

import FPH
import Data.List

let contents2 = replace "." "" sonnet18
let contents3 = replace "!" "" contents2

sonnet18 是文件 FPH.hs 中的一个字符串。 我尝试了几种方法来替换它,但总是出现异常“解析错误(可能不正确的缩进或不匹配的括号) 它并没有说太多,查了一下,还没有帮助。所有缩进都是四个空格,依此类推。我找不到错误。感谢您的帮助。

【问题讨论】:

  • 添加 do-block 后,它只会给我另一个错误消息:“变量不在范围内:替换 :: [Char] -> [Char] -> [Char] -> t”跨度>
  • 是什么让您期望replace 存在?
  • 因为我这样做就像在教程中完成的那样并且他们以这种方式使用它,所以我认为它是我正在导入的库的一部分。
  • 什么教程?向我们展示。
  • 我看过那个教程,它告诉你准备从这里获取一个库:github.com/jgoerzen/missingh。那是包含replace(在Data.List.Utils)的库,而不是Data.List.Split

标签: haskell replace


【解决方案1】:

你不能像你一样在顶层使用let。 仅在使用解释器时才需要。

【讨论】:

  • "只有在使用解释器时才需要[顶级let]。" -- 如果您使用的是 GHC 8,即使在这种情况下也不会。
  • 当然可以。我不知何故以为我已经尝试在 do 块中执行此操作,但显然我没有尝试……因为它有效。但是现在我对缺少的表达式感到不安。
  • 看起来这不是我这里唯一的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-25
  • 1970-01-01
  • 1970-01-01
  • 2013-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多