为什么GHC避免默认编程?

时间:2015-08-11 17:02:22

标签: haskell tacit-programming

我正在查看GHC.Unicode库源,并意识到几乎所有的Haskell内部库大多数时候都避免了默认编程(也就是无点样式)。简单的函数可以很容易地转换,例如:

isLatin1 :: Char -> Bool
isLatin1 c = c <= '\xff'

导致:

isLatin1 :: Char -> Bool
isLatin1 = (<= '\xff')

但有些情况我无法应用它,例如当我有更复杂的功能时,例如:

isOctDigit c =  c >= '0' && c <= '7'

很难推断出一种构成操作的方法。我并不意味着进入范围,我的意思是仅仅通过编写功能来进行多项操作。以下内容:

isOctDigit = (>= '0') && (<= '7')

无效,并且由于返回类型不同,(>= '0') . (<= '7') 明显也不会发生。

考虑到这些意见,我有以下问题:

  • 我什么时候应该使用无点编程而不是全部显示?
  • 为什么GHC更喜欢显式而不是使用部分功能?
  • 如何在不明确的情况下编写不同类型的两个函数,例如示例?

0 个答案:

没有答案