作者godfat (godfat 真常)
看板PLT
标题Re: [问题] if是不是函数
时间Wed Sep 29 14:08:56 2010
(fixed typo)
或许是本板的第一串战火 =_=..
首先我想先说,「推文请勿超过三行」,请见板规
接下来如果又严重超过三行,水桶一天 (24h)
其次我想说,尽量不要有嘲讽的语气,但我能理解有时候还是会很想说。
再有嘲讽语气的话我会点名,希望能收敛点。
==================== 分隔线 ====================
个人想法
if 是不是 function, 当然要看是哪个语言了,不谈语言只谈概念,
那 if 就应该是所有语言的定义的集合,没必要坚持一定是什麽...
在现今 imperative 语言充斥的环境下,if 大多是 statement,
而在有些有点 functional programming 意味的语言下,会是 expression.
另外在很少数的地方,if 确实是个 function.
在 if 是 function 的世界里,例如 Agda 中,他的定义是
if_then_else_ : ∀ {a} {A : Set a} → Bool → A → A → A
if true then t else f = t
if false then t else f = f
可以在这边看到程式,这是 Agda standard library
http://www.cs.nott.ac.uk/~nad/repos/lib/src/Data/Bool.agda
这一个 function 用到了 mixfix:
http://wiki.portal.chalmers.se/agda/pmwiki.php?n=ReferenceManual.Mixfix
也就是说,当我们写 if b then t else f 时,用一般语言的语法可以看成:
if(b, t, f)
也当然了,整个程式本身是没有任何 side-effect 的,否则这也无法成立。
--
Hear me exalted spirits. Hear me, be you gods or devils, ye who hold
dominion here:
I am a wizard without a home. I am a wonderer seeking refuge.
Sacrifice
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.160.129
1F:推 yauhh:ok,我会遵守. 09/29 14:11
※ 编辑: godfat 来自: 220.135.160.129 (09/29 14:12)
2F:→ yauhh:那我说 boolean -> actions 在actions部份显然是看s-effect. 09/29 14:12
3F:→ godfat:我最後一句话可能讲得太随便了 XD 09/29 14:14
4F:推 VictorTom:推个人想法那段, 讨论东西前要先把定义/范围设定清楚:) 09/29 23:30
5F:→ yzugsr:推推 10/02 08:54