我想知道Haskell是否跟踪天气功能是功能组成,即我可以定义一个功能与此类似的功能吗?:
compositionSplit f.g = (f,g)
最佳答案
不,不可能。
例如,
f1 = (+ 1) . (+ 1) :: Int -> Int
与...具有相同的功能
f2 = subtract 1 . (+ 3) :: Int -> Int
并且参照透明性要求用equals代替equals,因此如果
compositionSplit
是可能的,它将f1
和f2
产生相同的结果,因为那是相同的函数,但compositionSplit f1 = ((+ 1), (+1))
规范将需要compositionSplit f2 = (subtract 1, (+ 3))
和compositionSplit
。