对函数定义的某些部分使用无点样式

问题描述

给出此功能(顺便说一句,我应该说它是按情况定义的吗??我怎么指代这样定义的功能?),

f :: Int -> Int -> Int
f 0 x = x
f x _ = x

我在徘徊是什么原因,如果存在,为什么我不能这样写:

f :: Int -> Int -> Int
f 0 x = x
f = const

确实,在尝试使用此功能时,出现此错误

    Equations for ‘f’ have different numbers of arguments

在我看来似乎很明显,因为f = constf与接受两个参数(或任意数量的argumnts,fwiw)并不兼容;好吧,所有函数都接受一个参数并返回一个函数,对吗?)。

解决方法

没有根本原因不能做到这一点。但这使语言复杂化,没有令人信服的理由。