PLT 板


LINE

看板 PLT  RSS
來分享點心得吧~ \囧/ 最近幾個月接觸的東西 順便看看能不能稍稍激起一點這個版的活力.. 有錯煩請各位多指教~ o(_ _)o ==前言分隔線== Type System Type System是一個Programming Language中很重要的一個部分 它可以幫助我們把程式中的values和expressions給分類好 Type System可以檢查出我們程式的一些錯誤 也可以幫助我們最佳化我們的程式 舉例來說 > int i = 10; 這樣就是宣告變數i具有int的type 後面都用 i:int 這樣來表示variable及其所擁有的type 假設我們今天有個function:foo foo吃一個int,吐出另一個int > int foo(int i){ > return i + i; > } > > String v = foo(10); //error 如此一般,compiler會吐出一個error 告訴你 v 和 foo(10) 這兩個的type是不同的 v:String foo(10):int 這就是type system的功能之一 它會幫我們做一些檢查 ====== 接著是讓人歡樂無限的Dependent Type \囧> 在真正講到dependent type之前 回憶一下我們一開始的糖炒栗子 > int i = 10; 我們知道 i:int 也就是說,我們知道我們的資料(也就是i) 有一個叫做int的特性(屬性) 一個複雜一點的宣告可以告訴我們更多關於我們的資料的特性 > class List<E e>{ ... } > List<String> myList = new List<String>; class List<E e> 表示我們定義一個叫做List的class 這個class本身會需要一個"型別參數" 也就是說,我們可以在實體化List物件時寫 List<Integer>或List<String>之類的 分別表示"裝Integer的List"和"裝String的List" 上面那樣的作法稱為generic programming(泛型) 不過,在這裡我們先不討論泛型的用法與意義 (這裡比我瞭解泛型的人應該是多到數不完,我還是不要丟臉好了XD) 不過必須一提的是,我們確實可以用這樣的方法來實做出dependent type 這點,希望在各位看官看完這篇文章以後,可以自行想像出來 題外話一下 據說,這個版的版主之前有嘗試過以這樣的方式來實做 也許可以請版主大人稍微講一下實做的心得 = =+ 回到主題,上面程式片段第二行的意思就很明顯了 一言以蔽之,就是 myList:List<String> 講的白話一點,我們知道我們的myList這個變數具有兩個特性 1)他是一個list 2)他不但是list,而且這個list裡面裝的所有資料的型態都是String 和上面那個陽春的 i:int (只單純的顯示了資料的種類) 來做比較 我們現在的 myList:List<String> 不但顯示了資料結構,也顯示了資料內容物的型別 回到我們一開始的名詞: dependent type 這個東西指就是"把資料的特性給建立進形別之中" dependent type - 相依(於資料)的形別 這東西能做什麼呢?? 很簡單,他能擴充我們的type身上能裝載的特性 我們可以把各個資料結構的特性給放進type裡面 這對於checking和最佳化等等都有不錯的幫助 例如說,我們可以把一個list的長度給放進type裡面 [1,2,3]和[1,2,3,4]這兩個list的type就會是不一樣的: [1,2,3] : List Integer 3 [1,2,3,4] : List Integer 4 而,如果我們把兩個list接起來 新的list一定是某個type是List Integer 7的list 如果我們拿到的list的type不是這樣 那就一定是有問題的,也許是有資料遺失或是重複了 而不是在我們真的要用這個list的時候才發現不對勁 小結論 \囧/ dependent type是用來強化我們工具的東西 它會讓我們programming變的複雜且充滿限制 而他確實的好處,其實只是讓我們程式提高"正確性" 以上,是我對dependent type粗淺的瞭解 相信一定很多高手想要幫我補充 請大家鞭小力點啦 >/////< ====== 實際上 我在摸索上面那些東西的時候 使用的工具不是java或是C++ 而是一些functional language 所以針對這個也做點"我所知道的介紹" 順便附上一點個人的感想 Haskell(GHC-6.6.1) 最一開始使用的語言 不過因為他對於dependent type的支援不是很好 ( 雖說好像有GADT,但是我不太知道那是什麼 也許哪個高手可以幫我補充一下,囧> ) 沒試幾次以後就轉向其他語言了 Omega http://web.cecs.pdx.edu/~sheard/Omega/index.html 沒有試過,只有看過程式碼 感覺語法和Haskell很像 Epigram http://www.e-pig.org/ 據說有比較完整的dependent type 也是我試最久卻最讓人動怒的東西.. 他是個editor-typechecker-interpreter的綜合體 編輯上,實在是不太好用 undo的時候容易當掉 存檔讀檔也都很麻煩 與其說是個editor,還不如說是一個"填空軟體" 語言本身,實在是.. 難以形容的詭異.. 有興趣的人可以去下載example來看.. 他另外有一個compiler 但是難用程度不下於那個editor 網站上的說明和下載下來的不一樣 http://www.dcs.st-and.ac.uk/~eb/esc.php Agda2 http://appserv.cs.chalmers.se/users/ulfn/wiki/agda.php 現在才要開始嘗試的東西 希望會比Epigram好用很多 Orz (謎之聲:話說我一開始是想寫agda,怎麼反而這個講最少?? XD) ======以下是順便問問題區 有哪位高手可以提供一點鍛鍊自己邏輯能力的方法.. 最近覺得自己邏輯沒有學好 很多證明的東西常常沒法很快轉過來 但是,對於要怎麼學好,我實在是沒有個概念 @"@ 以上,謝謝 o(_ _)o --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.126.239
1F:推 PsMonkey:低手路人幫推 10/01 01:44
2F:推 timTan:Good 期待下一篇 10/01 09:50
3F:推 noctem:辛苦啦~欸,後來 Agda 裝得起來嗎? 10/01 14:12
4F:推 jaiyalas:有~windows上有裝起來,但是ubuntu每次抓到一半就說有 10/02 00:31
5F:→ jaiyalas:error 不知道是怎麼回事,不過這幾天稍微多事一點,還沒時 10/02 00:31
6F:→ jaiyalas:間去慢慢試看看可以怎麼辦.. 10/02 00:32







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燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP