过去一两周,在我的计算机科学课上,有人要求我们展示如何通过“原则性转换”来简化和缩短函数。我们没有收到关于这些作业的反馈,所以我不知道我是否做得对。
这是我最近的练习,也是我尝试的解决方案:
Show by a series of principled transformations that we can define:
char :: Char -> Parser Char
char c = satisfy (c==)
as
char :: Char -> Parser Char
char = satisfy . (==)
我的尝试:
char c = satisfy (c==)
=> char c = satisfy . c==
=> char c = satisfy . flip ==c
=> char = satisfy . flip ==
=> char = satisfy . (==)
请问我可以得到一些反馈吗?为分配提供的代码不完整,因此我无法编译它并测试每个转换是否有效。我尝试编写一组类似的函数来自己测试转换,但不幸的是我很不擅长并且对 Haskell 很陌生,所以我也无法弄清楚。