關(guān)于Lisp采用波蘭式的一些想法

<p>我并沒有去專門為了Lisp使用前綴表達式而去網(wǎng)上尋找鼓吹有關(guān)此方面的文章或書籍芽腾。我也并不是Lisp的狂熱愛好者端幼。學(xué)習(xí)Lisp最初只不過是學(xué)習(xí)其偉大思想辫樱。
不過當(dāng)我慢慢學(xué)過Lisp一段時間之后匹摇,我慢慢的發(fā)自內(nèi)心的喜歡上了它甲葬。我用的是Scheme廊勃,一個教學(xué)用的語言经窖。當(dāng)然對于其使用的前綴表達式我也想說一下我自己的認識坡垫。</p>
<p>先說一點:前綴表達式也可以叫波蘭式,后綴表達式也可以叫逆波蘭式画侣。</p>
<p>上過數(shù)據(jù)結(jié)構(gòu)課,我們都知道前綴配乱、中綴和后綴表達式分別對應(yīng)的表達式樹的先序、中序和后續(xù)遍歷宪卿。也就是說前綴的诵、中綴和后綴表達式這三者可以互相轉(zhuǎn)換的。</p>
<p>
<small>比如:</small>
</p>
<ul>
<li>中綴:1 + 2 + (3 + 4) * 5 + 6 + 7</li>
<li>后綴:1 2 + 3 4 + 5 * + 6 + 7 +</li>
<li>前綴:+ + + + 1 2 * + 3 4 5 6 7</li>
</ul>
<p>很多人是很不適應(yīng)甚至反感前綴表達式的佑钾,因為很不習(xí)慣西疤,我們從小學(xué)習(xí)數(shù)學(xué)休溶,學(xué)習(xí)基本的四則運算扰她,好像數(shù)學(xué)都是用的中綴表達式芭碍。真的是這樣子嗎!</p>
<p>其實不是的窖壕,在四則運算加減乘除以外的世界,其實都是用的前綴表達式瞻讽,舉個例子,比如根號√4晌砾,這是在數(shù)學(xué)再常見不過的求根表達式了。它就是一個前綴表達式养匈。
根號在最前面都伪。當(dāng)然根號是個一元運算符,根號里面的被視為一個整體院溺,對整體求值磅轻。</p>
<p>在舉一個例子,比如令許多人頭疼的積分∫谆膳。它也是前綴表達式撮躁,積分符號∫在各個參數(shù)的最前面漱病。 </p>
<p>現(xiàn)在看來把曼,數(shù)學(xué)書上就是在用前綴表達式,大家也都可以適應(yīng)注盈,為什么到了編程中就不怎么適應(yīng)了……</p>



<p>當(dāng)然更坑爹的是逆波蘭式:比如Pascal中定義變量var x : real;
或者近來的年度語言Golang的定義變量var x float叙赚。(順便說一句僚饭,之前看過王垠的博客胧砰,它也不喜歡go的這種定義變量方法)
大家習(xí)慣的是比如double x;這樣子的定義變量方法。</p>
<p>當(dāng)然有些時候尉间,在處理二元關(guān)系的時候,無論是波蘭式還是逆波蘭式都沒有中綴表達式好理解哲嘲。就比如我們的四則運算,只不過是把加減乘除當(dāng)作了特殊的運算法古掏。
也就是只能處理二元關(guān)系的運算符(這里的是減號而不是負號--一元運算符)侦啸。</p>
<p>除此之外呢,比如函數(shù)f(x . y)光涂,這個樣子寫是表示函數(shù)f中可以有多個參數(shù)。也就是C語言中的f(int... a)可變參數(shù)钝计。</p>
<p>如果我們把函數(shù)f當(dāng)作是一個運算符齐佳,其實它可以是運算符或者是它就是運算符,因為它處理了參數(shù)炼吴。函數(shù)就是一個采用前綴的表達方法。</p>
<p>因為如果你不用前綴你怎么寫出表達式呢硅蹦?比如要定義x,y涮瞻,z這三個參數(shù)的和的函數(shù)假褪,sum(x, y, z),如果用中綴你如何寫出表達式呢嗜价?
(x sum y) sum z 這個樣子嗎幕庐?這個樣子好像也图矣伲坑爹的。也就是說前綴可以支持任意多的參數(shù)冤寿,而中綴只能支持兩個青伤。因為到了多元關(guān)系之后督怜,中綴幾乎不存在
這樣的表示方法狠角,根本沒有可比較的對象。</p>
<p>所以當(dāng)處理非二元關(guān)系的時候姨蟋,前綴表達式還是有一些優(yōu)越的立帖。另一點,如果這個operator的名字比較長晓勇,放在前面會好看一些。(竊喜</p>
<p>當(dāng)然使用前綴表達式可以與函數(shù)表示方法相統(tǒng)一绰筛。這個樣子羡玛,就可以使得很多事情變得和諧,統(tǒng)一稼稿。</p>
<p>說了這些讳窟,其實前綴中綴最大的分歧在于二元關(guān)系上,如果二元關(guān)系出現(xiàn)的多丽啡,那就使用中綴表達式,如果多元關(guān)系出現(xiàn)的多那就使用波蘭式改执。</p>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市衬横,隨后出現(xiàn)的幾起案子终蒂,更是在濱河造成了極大的恐慌,老刑警劉巖拇泣,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霉翔,死亡現(xiàn)場離奇詭異睁蕾,居然都是意外死亡债朵,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門壹店,熙熙樓的掌柜王于貴愁眉苦臉地迎上來芝加,“玉大人,你說我怎么就攤上這事将塑◎螋铮” “怎么了点寥?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵敢辩,是天一觀的道長弟疆。 經(jīng)常有香客問我,道長怠苔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任迫肖,我火速辦了婚禮,結(jié)果婚禮上蟆湖,老公的妹妹穿的比我還像新娘。我一直安慰自己稠集,他們只是感情好饥瓷,可當(dāng)我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著晦鞋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪棺克。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天确买,我揣著相機與錄音纱皆,去河邊找鬼。 笑死派草,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的近迁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼歧譬,長吁一口氣:“原來是場噩夢啊……” “哼拓瞪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎舌界,沒想到半個月后泰演,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡藐握,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年垃喊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片本谜。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡乌助,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出他托,到底是詐尸還是另有隱情,我是刑警寧澤赏参,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布登刺,位于F島的核電站,受9級特大地震影響纸俭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜揍很,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一窒悔、第九天 我趴在偏房一處隱蔽的房頂上張望呜袁。 院中可真熱鬧简珠,春花似錦虹钮、人聲如沸膘融。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽岛都。三九已至律姨,卻和暖如春臼疫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背多矮。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工塔逃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人湾盗。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像躏吊,于是被迫代替她去往敵國和親帐萎。 傳聞我的和親對象是個殘疾皇子比伏,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 第一部分Common Lisp介紹第1章 介紹一下Lisp你在學(xué)的時候覺得已經(jīng)明白了赁项,寫的時候更加確信了解了澈段,教別...
    geoeee閱讀 2,947評論 5 8
  • Lisp的本質(zhì) - climbdream的個人空間 - 開源中國社區(qū)https://my.oschina.net/...
    葡萄喃喃囈語閱讀 700評論 0 10
  • 前言 人生苦多败富,快來 Kotlin 悔醋,快速學(xué)習(xí)Kotlin! 什么是Kotlin? Kotlin 是種靜態(tài)類型編程...
    任半生囂狂閱讀 26,211評論 9 118
  • 說明 函數(shù)式編程和面向?qū)ο缶幊炭梢哉f是編程的兩大宗教德玫,猶如編輯器之爭一樣匪蟀,之間口角不斷宰僧。我雖然靠著OOP的主力語言...
    lingyv閱讀 1,690評論 1 14
  • 說說劇中出現(xiàn)的家暴情節(jié)琴儿。這幾年家暴被提及的次數(shù)越來越多,也就說明被越來越多的人所重視了~誠然我覺得這是一個好事情...
    樹皮醬閱讀 560評論 0 0