lisp语言cond和if套用,lisp:if语句的格式正确

As a task for myself to learn common lisp, I'm trying to recreate lodash.

En route to recreating _.chunk, I've written the following to test for an optional argument

(defun _.chunk (array &optional size)

(if (size)

(write ("there") )

(write ("not") )

)

)

Setting (setf x #('a 'b 'c 'd)) and then running (_.chunk x), I get an error:

; caught ERROR:

; illegal function call

; (SB-INT:NAMED-LAMBDA _.CHUNK

; (ARRAY &OPTIONAL SIZE)

; (BLOCK _.CHUNK

; (IF (SIZE)

; (WRITE ("there"))

; (WRITE ("not")))))

What's the correct way to test for optional function parameters?

解决方案

size-p, the name of the optional variable which may be specified after the default value of a keyword or optional argument, will be true if the parameter was passed as an argument to a function call.

so you could do something such as:

(defun _.chuck (array &optional (size 0 size-p))

(if size-p

(rest of your form...)))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值