有人在做一个关于将函数应用两次的函数的练习时问我这个问题,我觉得它很有趣.
我们的想法是我们应该使函数两次,它接受一个函数和一个输入,并将函数应用两次,例如
twice :: (a -> a) -> a -> a
twice f x = f ( f x )
Run Code Online (Sandbox Code Playgroud)
打字通常很有意义.不幸的是,对于元组中的元组和函数fst我们可能认为可以使用它,((1,2),3)但由于类型的原因,这是不可能的twice.
有没有办法让这样的东西有效?