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

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

    已知函數(shù)如下:
  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)返回數(shù)組[1,2]。isub減法,iequ判斷是否相等。于是我寫了一個函數(shù)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)))
    函數(shù)的意思是,如果max==0則返回空數(shù)組,否則返回[max]加上makearray (max-1)。

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

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

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

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

    然后,empty返回list T。

    最后,iequ max 0顯然返回bool。根據(jù)if的類型信息bool->T->T->T,傳入?yún)?shù)bool、list T2和list int,顯然可以得到if在這個上下文中,T=list int。因此得到的結(jié)果就是makearray max返回list int。加上max是int,所以makearray的類型就是int->list int了。

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

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

評論:
# re: Kernel FP 類型推導(Type Inference)實驗成功! 2008-10-04 10:01 | 空明流轉(zhuǎn)
很好,終于OK了。  回復  更多評論
  
# re: Kernel FP 類型推導(Type Inference)實驗成功! 2008-10-04 10:18 | 陳梓瀚(vczh)
我發(fā)現(xiàn)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>
            国产精品免费网站在线观看| 欧美国产精品va在线观看| 国产精品久久久999| 欧美激情亚洲综合一区| 免费成人性网站| 老鸭窝毛片一区二区三区| 久久久久久日产精品| 久久午夜羞羞影院免费观看| 久久婷婷激情| 欧美日韩国产欧美日美国产精品| 欧美日韩一区三区| 国产手机视频一区二区| 狠狠色狠狠色综合| 亚洲日本免费| 午夜精品免费| 欧美电影专区| 亚洲五月婷婷| 美女主播视频一区| 国产精品伦一区| 国产精品视频| 精品不卡一区| 亚洲伊人一本大道中文字幕| 久久漫画官网| 99精品国产一区二区青青牛奶| 亚洲欧洲99久久| 欧美电影美腿模特1979在线看| 国产精品蜜臀在线观看| 亚洲风情亚aⅴ在线发布| 午夜精品久久久久久99热| 欧美成年人视频网站| 久久精品导航| 一本到12不卡视频在线dvd| 国产一区二区三区的电影| 欧美日韩在线另类| 国产精品手机在线| 亚洲第一色中文字幕| 亚洲视屏一区| 美女91精品| 日韩一区二区精品在线观看| 久久av免费一区| 欧美激情一二区| 亚洲第一精品在线| 午夜精品久久久久久久| 91久久精品一区| 欧美亚洲视频在线看网址| 欧美巨乳在线观看| 在线欧美日韩| 久久久精品性| 性欧美暴力猛交另类hd| 欧美日韩一区二区三区在线视频| 亚洲国产高清一区| 美国十次成人| 久久久久久综合| 国产欧美一区二区白浆黑人| 亚洲欧美激情一区二区| 亚洲精品一区二区三区在线观看| 美女视频黄免费的久久| 韩国自拍一区| 美日韩精品免费观看视频| 久久精品国产99| 一区二区在线视频| 久久精品国产免费观看| 亚洲免费影院| 国产日本欧美一区二区| 久久精品久久综合| 久久国产精品99国产精| 一区免费观看| 亚洲电影在线播放| 欧美精品一区二区三区蜜桃| 99国产精品视频免费观看| 亚洲精品网站在线播放gif| 欧美久色视频| 午夜精品免费视频| 久久爱www久久做| 亚洲东热激情| 亚洲国产综合91精品麻豆| 欧美日韩国产一区二区三区| 在线中文字幕不卡| 亚洲自拍偷拍麻豆| 精品96久久久久久中文字幕无| 欧美成人黄色小视频| 欧美极品在线观看| 性做久久久久久免费观看欧美| 欧美一区二区三区日韩| 亚洲国产欧美日韩| 久久影视三级福利片| 欧美国产先锋| 亚洲视频第一页| 一区二区av在线| 国产视频精品xxxx| 欧美激情视频在线免费观看 欧美视频免费一 | 欧美日韩黄色一区二区| 亚洲一区久久| 久久精品国产成人| 日韩视频―中文字幕| 亚洲一区二区三区在线播放| 精品成人一区二区三区| 亚洲毛片在线看| 国产一区二区三区成人欧美日韩在线观看| 久久久精品性| 欧美网站大全在线观看| 两个人的视频www国产精品| 欧美日韩免费在线观看| 久久国产日韩| 欧美日韩免费在线视频| 欧美成ee人免费视频| 国产精品va| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美日韩色综合| 女生裸体视频一区二区三区| 国产精品你懂的在线| 亚洲区在线播放| 在线精品福利| 欧美在线在线| 欧美在线观看一区二区三区| 欧美日本高清| 亚洲黑丝在线| 亚洲日本视频| 免费观看成人网| 免播放器亚洲| 韩国成人福利片在线播放| 亚洲欧美一区二区精品久久久| 一区二区激情小说| 欧美绝品在线观看成人午夜影视| 嫩草伊人久久精品少妇av杨幂| 国产亚洲一区二区在线观看| 亚洲影视在线| 午夜视频在线观看一区二区| 欧美日韩国产在线观看| 亚洲国产cao| 亚洲精品一区二| 欧美高清在线一区二区| 亚洲电影中文字幕| 亚洲国产欧美国产综合一区| 久久综合精品国产一区二区三区| 久久精品一区二区| 国内综合精品午夜久久资源| 香蕉免费一区二区三区在线观看| 亚洲欧美在线播放| 国产乱码精品一区二区三区不卡 | 欧美大胆a视频| 一区二区在线免费观看| 久久亚洲一区二区三区四区| 牛牛影视久久网| 日韩一级大片| 国内揄拍国内精品少妇国语| 欧美亚洲网站| 久久免费高清视频| 亚洲黄一区二区三区| 午夜精品区一区二区三| 国产精品综合不卡av| 性欧美xxxx视频在线观看| 另类天堂av| 99精品国产热久久91蜜凸| 欧美日韩精品三区| 中文高清一区| 久久久国产精彩视频美女艺术照福利| 国产一区在线视频| 另类综合日韩欧美亚洲| 亚洲精品一区二区网址| 久久国产精品黑丝| 亚洲精品乱码久久久久久按摩观| 欧美日韩小视频| 欧美在线观看网站| 亚洲电影免费观看高清完整版在线| 一区二区三区.www| 国产欧美日韩综合一区在线观看| 久久久久se| 99国产精品国产精品久久| 久久精品免费观看| a4yy欧美一区二区三区| 国产日韩欧美亚洲| 欧美激情91| 久久国产精品99久久久久久老狼| 亚洲国产裸拍裸体视频在线观看乱了中文| 中日韩美女免费视频网站在线观看| 国产视频亚洲精品| 欧美另类一区| 久久久综合免费视频| 亚洲色无码播放| 亚洲国产精品成人va在线观看| 欧美一区免费视频| 在线视频欧美日韩| 亚洲激情影视| 狠狠色狠狠色综合人人| 国产精品成人久久久久| 欧美不卡在线视频| 欧美尤物巨大精品爽| 在线一区二区三区做爰视频网站| 欧美大片一区| 久久全国免费视频| 欧美一区二区精品在线| 亚洲无吗在线| 亚洲精品乱码久久久久久蜜桃91| 国产资源精品在线观看| 国产乱码精品一区二区三区不卡 | 亚洲综合精品一区二区| 亚洲激情在线激情| 免费在线观看精品| 久久香蕉国产线看观看网|