小编Rnh*_*joj的帖子

如何使用视图模式语法编写此case表达式?

在我读完"了解你的Haskell以获得伟大的好处!" 中的RPN计算器示例之后.我想以更一般的方式自己重写它.

为了方便地扩展可用的功能,我将它们放在单独的列表中,并lookup使用ViewPatterns语法将模式与函数匹配.为了阅读输入read我写了这个:

parse xs x = case readMaybe x of
  Just x  -> Right (x : xs)
  Nothing -> Left "Syntax error
Run Code Online (Sandbox Code Playgroud)

但我宁愿避免使用case表达式并再次使用这样的视图模式:

parse xs (readMaybe -> Just x ) = Right (x : xs)
parse xs (readMaybe -> Nothing) = Left "Syntax error"
Run Code Online (Sandbox Code Playgroud)

但是后者我得到了这个错误: No instance for (Read a0) arising from a use of ‘readMaybe’

我不明白为什么.它们不相同吗?

整个代码在这里.

haskell pattern-matching

8
推荐指数
1
解决办法
432
查看次数

是否可以在Haskell中编写此函数?

我正在学习依赖类型:在Haskell中我定义了规范类型

data Vec ? Type ? Nat ? Type where
  Nil  ? Vec a Z
  (:-) ? a ? Vec a n ? Vec a (S n)
Run Code Online (Sandbox Code Playgroud)

并且实现了大部分功能,Data.List但是我不知道怎么写,如果可能的话,功能就像

delete ? Eq a ? a ? Vec a n ? Vec a (??)
Run Code Online (Sandbox Code Playgroud)

因为结果的长度是未知的.我在Agda中找到了它并且以这种方式实现了它

delete : {A : Set}{n : Nat}(x : A)(xs : Vec A (suc n)) ? x ? xs ? Vec A n
delete           .x (x ? xs)  hd    = xs
delete {A}{zero } _  ._ …
Run Code Online (Sandbox Code Playgroud)

haskell dependent-type

7
推荐指数
1
解决办法
222
查看次数

从 ssh 使用 python 时出现 UnicodeEncodeError

我制作了一个打印 unicode 特殊字符(即上标、下标...)的小应用程序。当它在本地运行时没有问题,但是当它在 ssh 会话中运行时,我总是收到 UnicodeEncodeError。具体来说:UnicodeEncodeError 'ascii' can't encode characters in position 0-1: ordinal not in range(128) 我尝试了不同的 ssh 客户端、计算机并仔细检查了会话编码,但结果是一样的。这真的很奇怪。为什么会发生这种情况?这真的与ssh有关吗?

python unicode ssh encoding python-3.x

5
推荐指数
1
解决办法
1072
查看次数

Haddock:没有记录导入的类实例

由于相互依赖的导入,我不得不在Instances模块中移动类实例,在模块中移动我的数据类型Types.然后,两个模块的定义由包的主模块重新导出.

Haddock为我的类型列出派生的类实例,deriving但缺少所有其他实例(尽管它们似乎正确导出并正常工作).这是正常还是应该列出?我能做什么?

如果需要,是包.

谢谢.

haskell instance typeclass haddock

5
推荐指数
0
解决办法
108
查看次数

无法访问使用tempfile创建的临时文件

tempfile.NamedTemporaryFile()用来存储一些文本,直到程序结束。在Unix上可以正常使用,但是在Windows上无法读取或写入返回的文件:python提供Errno13。唯一的方法是使用设置delete=False和手动删除文件os.remove()。为什么?

python windows

4
推荐指数
1
解决办法
4594
查看次数