剛剛把黑暗執行緒的分贓程式改用 Haskell 重寫。
演算法其實很簡單,就是不要先除完再來調整,而是一次算一個整數出來就好了。我覺得還蠻適合用 list 的概念來做所以拿來當作練習題目。
另外,我也嘗試在這段程式碼中練習 Tail Recursion。
一開始的版本因為少了那兩個 toRational 害我花了好多時間除錯...應該要花時間好好研讀一下 Haskell 的型別系統了。
程式碼如下:
2009年6月17日
2009年6月9日
2009年6月7日
命名的準則:關連性
以下是 Name that method: Symmetry 的摘要:
我們已經知道要把相關的程式碼或概念放在相關的地方。
所以我們會把程式切成類別與模組,也用相同的準則去管理程式檔案與目錄。
然而比較少被提及的是:命名 method 時也可以依循類似的準則。
文章中以 Merb、Rails 3 作例子。
同樣的一組功能在 Merb 叫作 provides/display,
在 Rails 3 中則是 respond_to/respond_with。
若你從沒用過這兩個 method,
Rails 3 的命名方式應該可以讓你一眼就看出兩個函式是相關的。
所以請替相關的 method 取相關的名稱。
文章中還有提到另一種不好的命名方式:
Camping 提供兩個同名的 method 作相反的事情。
註:上述 Merb、Rails 和 Camping 都是 Ruby 的網頁應用程式框架。
--
後記:
最近這個 Blog 好像都靠轉錄或翻譯文章來充數。
另外,硬要全部都寫中文實在太痛苦了,
以後還是不要做這種蠢事好了。
我們已經知道要把相關的程式碼或概念放在相關的地方。
所以我們會把程式切成類別與模組,也用相同的準則去管理程式檔案與目錄。
然而比較少被提及的是:命名 method 時也可以依循類似的準則。
文章中以 Merb、Rails 3 作例子。
同樣的一組功能在 Merb 叫作 provides/display,
在 Rails 3 中則是 respond_to/respond_with。
若你從沒用過這兩個 method,
Rails 3 的命名方式應該可以讓你一眼就看出兩個函式是相關的。
所以請替相關的 method 取相關的名稱。
文章中還有提到另一種不好的命名方式:
Camping 提供兩個同名的 method 作相反的事情。
註:上述 Merb、Rails 和 Camping 都是 Ruby 的網頁應用程式框架。
--
後記:
最近這個 Blog 好像都靠轉錄或翻譯文章來充數。
另外,硬要全部都寫中文實在太痛苦了,
以後還是不要做這種蠢事好了。
2009年6月4日
HTML 5 的新東西
以下是從 Nelson 的 Google I/O 2009 筆記(上、中、下)歸納出的要點:
這樣一來,以後一般使用者打開電腦應該只會用到瀏覽器了吧?XD
(但是不知道什麼時候主流瀏覽器才能都完整支援?)
--
我發現我真是愛硬下結論。
- <canvas> 跟 <video>
讓使用者不必再為了畫面效果裝一大堆瀏覽器外掛,
開發者也可以用更優雅的方式寫出好用或華麗的網頁應用程式。
- Geo location 和 Database and app cache
強化了 mobile web app 可發展的空間。
- Web workers
多緒的 Javascrpit,太過複雜的運算就可以丟到背景去執行,而不會影響使用者使用上的流暢度。
這樣一來,以後一般使用者打開電腦應該只會用到瀏覽器了吧?XD
(但是不知道什麼時候主流瀏覽器才能都完整支援?)
--
我發現我真是愛硬下結論。
訂閱:
文章 (Atom)