小编Mui*_*uin的帖子

什么是Haskell的Data.Typeable?

我遇到过对Haskell的引用Data.Typeable,但我不清楚为什么我想在我的代码中使用它.

它解决了什么问题,怎么解决?

haskell generic-programming typeclass scrap-your-boilerplate

72
推荐指数
4
解决办法
6649
查看次数

Haskell处理错误处理

这里没有争论,Haskell中有各种各样的机制来处理错误并妥善处理它们.错误monad,Either,Maybe,exception等.

那么为什么在Haskell中编写其他语言中容易出现异常的代码感觉更直接呢?

假设我想编写一个命令行工具来处理在命令行上传递的文件.我想:

  • 验证是否提供了文件名
  • 验证文件可用且可读
  • 验证文件具有有效标头
  • 创建输出文件夹并验证输出文件是否可写
  • 处理文件,解析错误时出错,不变错误等.
  • 输出文件,写入错误错误,磁盘已满等.

所以一个非常直接的文件处理工具.

在Haskell中,我将使用Maybe和Either将这些代码包装在monad的某些组合中,并根据需要翻译和传播错误.最后,它都进入IO monad,我可以将状态输出给用户.

在另一种语言中,我只是抛出异常并捕获到适当的位置.直截了当.我不会花太多时间在认知困境中试图解开我需要的机制组合.

我只是接近这个错误,还是这种感觉有一些实质内容?

编辑:好的,我得到的反馈告诉我,这感觉更难,但事实并非如此.所以这是一个痛点.在Haskell中,我正在处理monad堆栈,如果我必须处理错误,我会在这个monad堆栈中添加另一个层.我不知道有多少电梯和其他语法垃圾只是为了使代码编译而添加,但增加了零语义含义.没有人觉得这增加了复杂性?

haskell exception

40
推荐指数
3
解决办法
2868
查看次数

曲线拟合一系列线段

有很多关于 SO 的曲线拟合问题,但我似乎无法找到解决我正在寻找的问题的问题。

场景很简单:我在平板电脑屏幕上捕获 X/Y 点。我想将生成的线段绘制为平滑曲线而不是一系列线段。许多应用程序都这样做,例如:Penultimate0:36 处的草图演示)或Autodesk Sketchbook

贝塞尔曲线算法采用固定数量的点来绘制曲线,并且似乎不能很好地处理多个多点。任何人都可以指出一个做得很好的算法吗?

curve drawing line

5
推荐指数
2
解决办法
3108
查看次数