我正在努力正确定义函数的无点版本,它向列表中添加了2个元素。
很容易得出一些简单的琐碎实现:
addTwoElems :: a -> a -> [a] -> [a]
addTwoElems x y xs = x : y : xs
addTwoElems x y = (++) [x, y]
addTwoElems = (.) `on` (:) “ point free but with additional function
但是两个列表数据构造函数(:)
的 *point-free复合 *(.)看起来会是什么样子呢?
请不要只展示正确的函数实现,而是请解释如何获得正确版本的步骤和逻辑。
1条答案
按热度按时间tpgth1q71#
根据评论,一步一步的推导,只使用
.
和:
: