青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-341  評論-2670  文章-0  trackbacks-0
    我終于在實驗階段解決了這個困擾了我5個月(雖然實際上我花了3個星期)的問題。目標是這樣的:你寫程序,可以盡可能的不寫一些類型信息,譬如函數參數和返回值的類型信息等。我的編譯器幫你把它的類型算出來。

    已知函數如下:
  data list T = (empty | (list T (list T)))

 func isub :: (
int -> (int -> int)) alias "isub"

  func iequ :: (
int -> (int -> bool)) alias "iequ"

  func 
if T :: (bool -> (T -> (T -> T)))
  def 
if cond t f = 
    select cond of
      
case true : t
      
case false : f
    end

    這里有類型list T,empty返回list T(沒有上下文的時候T不知道),list 1(list 2 empty)返回數組[1,2]。isub減法,iequ判斷是否相等。于是我寫了一個函數makearray x返回[x , x-1 , x-2 , ... , 1]。也就是說,makearray 5返回[5,4,3,2,1],代碼如下:
1 def makearray max = 
2     if (iequ max 0
3         empty 
4         (list max (makearray (isub max 1)))
    函數的意思是,如果max==0則返回空數組,否則返回[max]加上makearray (max-1)。

    現在我并沒有為makearray定義任何類型,所以我的編譯器必須嘗試能否產生一個類型給他(有可能結果是模板函數):
1 func makearray :: (system.int -> (system.list system.int))

    方法如下(標紅字的部分為實際編碼中遇到困難的部分):
    首先,根據isub的類型int->int->int,可以判斷出isub max 1的結果是int,然后假設max是int。因為如果max不是int則肯定會發生語法錯誤。因為我的語言沒有任何隱式轉換。

    其次,makearray (isub max 1)的類型計算不出來,實際上還沒計算出來。標記類型為"?"

    然后,list max (makearray...)了。max為int,所以現在list所期望的類型是int->?->?。然后根據list的實際類型T->list T->list T,我們可以得出,這個表達式返回list int

    然后,empty返回list T。

    最后,iequ max 0顯然返回bool。根據if的類型信息bool->T->T->T,傳入參數bool、list T2和list int,顯然可以得到if在這個上下文中,T=list int。因此得到的結果就是makearray max返回list int。加上max是int,所以makearray的類型就是int->list int了。

    大框架出來了,只是還有三種表達式:lambda expression、let-in expression和select-case expression沒有解決。不過這個應該不麻煩了,因為方法都差不多。

    P.S.
    為了解決這個問題,我給類型本身建模,給出了一個定義和若干操作組成一個代數系統。你可以——
        Apply:將模板參數替換成另一些類型,得到新的新的類型。
        Solve:對比兩個類型,如果可以通過某些Apply從類型1轉到類型2,那么給出Apply所需要的參數。
        Equal:對比兩個類型是否完全相等。
        Merge:對比兩個類型,其中兩個類型都有模板參數。如果可以通過Apply將類型1和類型2都轉換到類型3,那么給出其中一個合適的類型3。這個時候可以通過Solve去獲得轉換的方法。
    通過這四個操作互相組合,加上一些定制的策略,就可以解類型方程組了,也就是這里所解決的問題。
posted on 2008-10-04 07:19 陳梓瀚(vczh) 閱讀(1876) 評論(3)  編輯 收藏 引用 所屬分類: 腳本技術

評論:
# re: Kernel FP 類型推導(Type Inference)實驗成功! 2008-10-04 10:01 | 空明流轉
很好,終于OK了。  回復  更多評論
  
# re: Kernel FP 類型推導(Type Inference)實驗成功! 2008-10-04 10:18 | 陳梓瀚(vczh)
我發現lazyness比type inference容易無窮多倍。半年前錯誤估計了工程量。  回復  更多評論
  
# re: Kernel FP 類型推導(Type Inference)實驗成功! 2008-10-06 06:30 | 陳坤
快點弄出來罷~~~  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美日韩国产精品成人| 欧美日韩精品欧美日韩精品一| 欧美午夜三级| 9久re热视频在线精品| 亚洲国产婷婷香蕉久久久久久99| 久久久久久穴| 精品91久久久久| 另类av导航| 免费精品99久久国产综合精品| 极品日韩久久| 亚洲第一主播视频| 欧美成人精品三级在线观看 | 亚洲欧美日韩国产另类专区| 欧美日韩四区| 亚洲欧美中日韩| 亚洲欧美日韩视频一区| 国产一区二区三区直播精品电影 | 亚洲精品乱码久久久久| 欧美黄色精品| 欧美视频在线观看免费网址| 午夜国产精品视频免费体验区| 亚洲女人av| 国产综合色精品一区二区三区| 美女日韩欧美| 欧美体内she精视频| 欧美主播一区二区三区| 老牛影视一区二区三区| 一本久道久久综合狠狠爱| 亚洲午夜激情网页| 亚洲国产成人精品久久| 一区二区三区欧美亚洲| 国产欧美日韩另类一区| 欧美激情视频在线播放| 国产精品日韩专区| 亚洲第一天堂av| 国产麻豆日韩| 亚洲欧洲综合另类| 国产亚洲欧美另类一区二区三区| 欧美成人黄色小视频| 国产精品久久久久久福利一牛影视| 久久夜色精品国产欧美乱极品 | 日韩视频在线观看免费| 国产亚洲成av人在线观看导航| 欧美激情中文不卡| 国产日韩亚洲欧美精品| 亚洲人体1000| 国产在线成人| 亚洲午夜精品福利| 亚洲乱码国产乱码精品精| 久久99在线观看| 亚洲一区二区精品| 欧美成人精品在线| 免费观看欧美在线视频的网站| 国产精品扒开腿爽爽爽视频 | 亚洲精品自在在线观看| 欧美在线地址| 欧美一区二区三区免费观看视频| 欧美激情视频一区二区三区在线播放| 久久精品国产69国产精品亚洲| 欧美三区美女| 亚洲麻豆视频| 亚洲欧洲在线一区| 久热这里只精品99re8久| 久久久久久亚洲精品杨幂换脸| 国产精品一区免费视频| 一本色道久久综合亚洲精品高清| 亚洲人体影院| 欧美成人免费全部观看天天性色| 久久一区中文字幕| 激情成人综合| 久久综合国产精品| 欧美高清视频在线观看| 亚洲国产高清自拍| 欧美成年人网站| 亚洲激情黄色| 亚洲片国产一区一级在线观看| 久久一区二区视频| 亚洲国产乱码最新视频| 亚洲精品影院在线观看| 欧美精品v日韩精品v国产精品| 亚洲国产日韩欧美| 一级日韩一区在线观看| 国产精品电影在线观看| 亚洲一区二区黄| 欧美在线视频在线播放完整版免费观看| 欧美日韩免费一区二区三区| 洋洋av久久久久久久一区| 亚洲你懂的在线视频| 国产精品热久久久久夜色精品三区| 亚洲三级电影在线观看 | 国产欧美欧洲在线观看| 欧美一级久久久久久久大片| 久久久久久网址| 亚洲国产视频直播| 欧美日韩综合视频网址| 亚洲欧美激情诱惑| 可以免费看不卡的av网站| 亚洲欧洲一区二区天堂久久| 欧美日韩免费观看一区| 中文在线一区| 久久嫩草精品久久久久| 亚洲精品在线视频| 国产精品网红福利| 久久精品国产综合精品| 亚洲国产日韩一区| 欧美影院成年免费版| 91久久国产自产拍夜夜嗨| 欧美三级网页| 久久躁日日躁aaaaxxxx| 一区二区三区黄色| 毛片一区二区三区| 一区二区三区四区精品| 狠狠狠色丁香婷婷综合久久五月| 欧美成人a视频| 亚洲综合国产精品| 亚洲国产精品va在看黑人| 亚洲欧美日本国产专区一区| 伊人春色精品| 国产精品视频精品| 久久综合福利| 午夜精品免费| 99re热这里只有精品视频| 免费一级欧美片在线观看| 午夜在线电影亚洲一区| 夜夜嗨一区二区三区| 国产自产2019最新不卡| 国产精品大片wwwwww| 欧美国产视频在线| 久久久久久久精| 午夜国产一区| 在线亚洲电影| 亚洲九九爱视频| 欧美成人官网二区| 久久免费视频这里只有精品| 亚洲天堂免费观看| 99re66热这里只有精品4| 在线看一区二区| 国内视频一区| 国产精品一级在线| 国产精品久久久久久模特| 欧美人成在线视频| 欧美国产精品专区| 免费在线亚洲| 欧美超级免费视 在线| 老司机精品久久| 久久一二三区| 免费人成网站在线观看欧美高清| 久久精品官网| 久久久精品999| 欧美中文字幕视频| 久久国产66| 久久精品男女| 美女日韩欧美| 欧美成人蜜桃| 欧美国产日本在线| 欧美片在线播放| 国产精品盗摄一区二区三区| 欧美色图五月天| 国产精品国产三级国产专区53 | 亚洲午夜在线观看视频在线| 一本一本久久| 亚洲婷婷在线| 欧美一区视频在线| 久久国内精品视频| 久久阴道视频| 欧美激情第9页| 欧美人体xx| 国产精品天天看| 黄色亚洲在线| 亚洲精品视频在线看| 亚洲在线免费| 久久久久久久久伊人| 欧美激情亚洲精品| 99re热精品| 欧美一级视频| 欧美高清不卡| 国产精品久久久久久久久免费| 国产午夜精品一区二区三区视频| 国产亚洲激情视频在线| 91久久精品国产91久久| 亚洲视频在线观看免费| 欧美一级网站| 亚洲电影免费在线| 中文亚洲欧美| 久久美女性网| 欧美日韩免费观看一区=区三区| 国产精品视频一| 在线色欧美三级视频| 亚洲欧美日韩中文播放| 老巨人导航500精品| 亚洲人成网站999久久久综合| 亚洲视频视频在线| 麻豆久久婷婷| 国产精品揄拍500视频| 91久久精品一区| 久久国内精品视频| 99精品国产一区二区青青牛奶| 欧美有码在线视频| 国产精品久久久久久久第一福利| 在线日韩欧美视频|