我是Haskell的新手,遇到麻烦<*>:
((==) <*>) :: Eq a => (a -> a) -> a -> Bool
Run Code Online (Sandbox Code Playgroud)
我如何理解这一点以及如何推断它?
我正在学习Racket,并写了这个定义:
(define y 2)
(define (f (x y))
(print x)
(print y))
Run Code Online (Sandbox Code Playgroud)
当我评价(f 1),x必然1,并且y必然2.这对我来说似乎很奇怪.这个表达式是如何扩展的?口译员对此做了什么?
我是Scheme的新手,在这里我遇到了虚线列表的问题,这是一个例子:
(define (f x . y) (cons x y))
当我输入时: (f 1 2 3)结果是'(1 2 3)。是的,它返回一个列表,此时
x => 1和y => '(2 3)。
我的问题是,当f采用不固定长度的 args时,解释器如何知道这一点?