原文:如何設計一門語言(六)——exception和error code

我一直以來對於exception的態度都是很明確的。首先exception是好的,否則就不會有絕大多數的語言都支持他了。其次,error code也沒什么問題,只是需要一個前提 你的語言得跟Haskell一樣有monad和comonad。你看Haskell就沒有exception,大家也寫的很開心。為什么呢 因為只要把返回帶error code結果的函數給做成一個monad comonad,那么就 ...

2013-06-10 15:02 1 2801 推薦指數:

查看詳情

如何設計一門語言(一)——什么是坑(a)

這個系列的起因是這樣的,王垠寫了一篇噴go的博客http://www.yinwang.org/blog-cn/2013/04/24/go-language/,里面說go已經爛到無可救葯了,已經懶得說了 ...

Sun Apr 28 01:28:00 CST 2013 33 12488
如何設計一門語言(九)——類型

類型是了解編程語言的重要一環。就算是你喜歡動態類型語言,為了想實現一個靠譜的東西,那也必須了解類型。舉個簡單的例子,我們都知道+和-是對稱的——當然這只是我們的願望了,在javascript里面,"1"+2和"1"-2就不是一回事。這就是由於不了解類型的操作而犯下的一些滑稽的錯誤。什么,你覺得 ...

Sun Aug 18 00:27:00 CST 2013 6 5455
如何設計一門語言(二)——什么是坑(b)

我從來沒有在別的語言的粉里面看見過這么容易展示人性丑陋一面的粉,就算是從十幾年前開始的C++和C對噴,GC和非GC對噴,靜態類型動態類型對噴的時候,甚至是雲風出來噴C++黑得那么驚天動地的時候,都沒有發生過這么腦殘的事情。這種事情只發生在go語言的腦殘粉的身上,這究竟代表什么呢?想學go語言的人 ...

Mon Apr 29 02:28:00 CST 2013 27 6378
如何設計一門語言(七)——閉包、lambda和interface

人們都很喜歡討論閉包這個概念。其實這個概念對於寫代碼來講一點用都沒有,寫代碼只需要掌握好lambda表達式和class+interface的語義就行了。基本上只有在寫編譯器和虛擬機的時候才需要管什么是 ...

Sat Jul 06 06:32:00 CST 2013 20 10941
如何設計一門語言(十二)——設計可擴展的類型

在思考怎么寫這一篇文章的時候,我又想到了以前討論正交概念的事情。如果一個系統被設計成正交的,他的功能擴展起來也可以很容易的保持質量這是沒錯的,但是對於每一個單獨給他擴展功能的個體來說,這個系統一點都不好用。所以我覺得現在的語言設計成這樣也是有那么點道理的。就算是設計Java的那誰,他也不是傻逼 ...

Mon Nov 11 01:07:00 CST 2013 13 3076
如何設計一門語言(十一)——刪減語言的功能

大家看到這個標題肯定會歡呼雀躍了,以為功能少的語言就容易學。其實完全不是這樣的。功能少的語言如果還適用范圍廣,那所有的概念必定是正交的,最后就會變得跟數學一樣。數學的概念很正交吧,正交的東西都特別抽象,一點都不直觀的。不信?出門轉左看Haskell,還有抽象代數。因此刪減語言的功能是需要高超的技巧 ...

Sun Oct 20 05:52:00 CST 2013 20 3959
如何設計一門語言(八)——異步編程和CPS變換

關於這個話題,其實在(六)里面已經討論了一半了。學過Haskell的都知道,這個世界上很多東西都可以用monad和comonad來把一些復雜的代碼給抽象成簡單的、一看就懂的形式。他們的區別,就像用js ...

Sat Jul 27 19:13:00 CST 2013 9 6047
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM