我不明白为什么setf不能使用函数调用返回的数组引用.在下面的例子中,为什么最终的调用会失败?
(setf arr #1a(a b c))
(defun ret-aref (a i)
(aref a i))
(eql (ret-aref arr 0) (aref arr 0))
;succeeds
(progn
(setf (aref arr 0) 'foo)
arr)
;fails
(progn
(setf (ret-aref arr 0) 'bar)
arr)
Run Code Online (Sandbox Code Playgroud) 为什么这会先打印"DIV/0",然后再打印"2"?
let printZero = printfn "DIV/0"
let printSuccess x = printfn "%d" x
let div ifZero success x y =
if y = 0
then ifZero
else x / y |> success
let printDiv = div printZero printSuccess
printDiv 8 4
printDiv 10 0
Run Code Online (Sandbox Code Playgroud)