2007年9月16日 星期日

Pugs 發起

Pugs 是目前 Perl6 最完整的實作。 關於 Pugs 的 interview 在這裡看到 A Plan for Pugs 。 ( 雖然是兩年前的東西了 )

讓 Autrijus 大師注意到 Haskell 的原因是起源於覺得 SVK 不夠彈性,於是換了 Haskell 寫的 Darcs 來使用。Autrijus 花了一個月就學 Haskell 。而後 Autrijus 說服了他的委託人 Perl5 缺乏 COW ( Copy-on-write ) 的機制,出資讓他以 haskell 開發更好的 Library.

在開發的過程中,Autrijus 發現到 Haskell 的優異, Autrijus 說:
But I digress. Using Haskell to develop OpenAFP.hs led to programs that eat constant 2MB memory, scale linearly, and are generally 2OOM faster than my Perl library.

Oh, and the code size is 1/10.
這是他發起 Pugs 的其中一個動機。接著他買了許多書,像是 TaPL , ATTaPL 等。
Autrijus:

Anyway. So, I ordered a bunch of books online including TaPL and ATTaPL so I could learn more about mysterious things like Category Theory and Type Inference and Curry-Howard Correspondence.
於是,Pugs 就這樣起來了。 :-) 當然詳細的 interview 請參閱 perl.com: A Plan for Pugs

在 use Perl; 上頭,也有幾篇紀念性的 Announcement 譬如說: "Day 1: Pugs" , "Day 29: A new month begins." 等等。

Pugs 的 Code 在每個模組的開頭幾行都有些有趣的 Quote,應該是 Autrijus 寫下的,譬如說 Class.pm 內的開頭幾行:
{-|
Class meta-model. (object meta-meta-model)

> Learn now the lore of Living Creatures!
> First name the four, the free peoples:
> Eldest of all, the elf-children;
> Dwarf the delver, dark are his houses;
> Ent the earthborn, old as mountains;
> Man the mortal, master of horses...
-}

或許是因為 Haskell 的關係,Perl 6 新增了許多類似 Haskell 的概念、功能,可參考 SynopsesYAPC: Perl 6 Today