PLT 板


LINE

看板 PLT  RSS
※ 引述《noctem (noctem)》之銘言: : ※ 引述《Schelfaniel (Schelfaniel)》之銘言: : : clojure 首先它走 JVM,所以很多函式庫的部份不成問題, : : 除了本身 Java 的限制,像是 Java 太底層還是要呼叫 C 的等等 : : 但是反過來說 clojure 語法現代化很多,和 Java 的結合性也很高, : : clojure 提供了很多專為 Java 設計的,如 proxy 指令, : : 就是專為 Java 事件回呼函式用的, : 看了 Ruby 板的範例,語法上還是蠻有 LISP 家族的風格。 : 中括號和大括號分別是什麼意思呢?冒號有特別意義嗎? 中括號是 vector,但是很多情形是用在表示參數,如 let fn 等的參數 user=> (type [1 2 3]) clojure.lang.LazilyPersistentVector user=> (let [x 1] x) 1 大括號是 hashtable user=> (type {'a 'b}) clojure.lang.PersistentArrayMap 冒號是 keyword user=> (type :a) clojure.lang.Keyword 基本上它 hashtable 都習慣用冒號,像是 {:name "godfat" :type 'super-programmer} 就是 key 值是 :name 的內容是 "godfat" :type 'super-programmer : 此外 clojure 和 LISP 有哪些不同呢? 其實,有一些我目前也只試用一些淺顯的功能,詳細的比較官網上有寫 http://clojure.org/lisps : 1. purely functional? 我覺得還是沒有 Haskell 純啦,但是比 Common Lisp 純, 至少, Common Lisp 可以寫得 OO 的,但 clojure 會很自然得寫得 functional 我是覺得比 Haskell 好入門 :QQ : 2. 是 static 還是 dynamic typing? dynamic typing,不過,由於 Java 是 static typing 在呼叫 Java 函數時,會變成使用 Java 的 Reflection 機制(會比較慢), 因此 clojure 提供的 Type Hint 也就是在參數中加入提示 可以比較一下 foo 和 foo2,都是呼叫 Java 的 .length, 但是 foo2 時提示了 x 的型態是 String (註:此時如果型態不是 String 就會出錯) 速度上就馬上從 dynamic language 的速度提升到像是 static language 的速度。 user=> (defn foo [x] (.length x)) #'user/foo user=> (time (dotimes [_ 1000000] (foo "a"))) "Elapsed time: 20217.463888 msecs" user=> (defn foo2 [#^String x] (.length x)) #'user/foo2 user=> (time (dotimes [_ 1000000] (foo2 "a"))) "Elapsed time: 28.428942 msecs" --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.29.28.137
1F:推 noctem:thanks! 07/07 10:23
2F:推 godfat:還有 type hint 這種東西喔 @@ 效能也未免差太多了... 07/07 10:35
3F:→ noctem:居然差到三位數耶.. 是因為 runtime 的型別檢查很花時間嗎 07/07 13:54
4F:→ Schelfaniel:就是這 type hint 讓 clojure 效能可以追上 Scala 的 07/07 15:05
5F:推 godfat:試了一下,果真是 "hint", 寫錯也能跑,但是超超超超慢.... 07/07 15:10
6F:推 noctem:欸欸欸,那為什麼 type 錯了還可以跑呢?? @_@ 07/07 17:02
7F:→ sbrhsieh:這樣的數據有點.....我想已不純粹是慢在 reflection 07/07 20:16
8F:推 sbrhsieh:有沒有人在玩 KAWA(Scheme on JVM)? 07/07 20:35
9F:→ godfat:更正,type hint 給錯的速度跟沒給是一樣的,但真的能跑... 07/07 20:40







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP