我想知道Haskell是否跟踪天气功能是功能组成,即我可以定义一个功能与此类似的功能吗?:

compositionSplit f.g = (f,g)

最佳答案

不,不可能。

例如,

f1 = (+ 1) . (+ 1) :: Int -> Int

与...具有相同的功能
f2 = subtract 1 . (+ 3) :: Int -> Int

并且参照透明性要求用equals代替equals,因此如果compositionSplit是可能的,它将
  • 需要为f1f2产生相同的结果,因为那是相同的函数,但
  • compositionSplit f1 = ((+ 1), (+1))规范将需要
  • compositionSplit f2 = (subtract 1, (+ 3))compositionSplit
  • 10-06 11:49