빈 벡터를 리덕션한다. APL은 답한다.
+/⍬
0
×/⍬
1
∧/⍬
1
프리미티브마다 항등원이 있다. 더하기는 0. 곱하기와 논리곱은 1. ⌈/⍬는 인터프리터가 가진 가장 작은 음수다. 호출하는 쪽에 특수 처리가 없다. 리덕션 전에 길이를 확인하지도 않는다.
dfn에는 그런 게 없다. Dyalog에서 {⍺+⍵}/⍬는 DOMAIN ERROR다. 같은 산술인데 항등원이 없다. 임의의 함수에 대해서는 인터프리터가 항등원을 알 수 없기 때문이다.
내가 읽는 언어 대부분은 이걸 함수마다 따로 정한다. sum은 0을 돌려주고, max는 예외를 던지거나 빈 옵션을 돌려주고, product는 아예 없을 때도 있다. APL에서는 규칙 하나다. 이걸 표로 만드는 언어가 이렇게 많은 게 거슬리는 사람이 또 있을까?