• 效果系統

    編輯
    本詞條由“匿名用戶” 建檔。

    效果系統概述

    編輯

    在計算中,效果系統是一個描述計算機程序的計算效果的正式系統,例如副作用。效果系統可以用來對程序的可能效果進行編譯時的檢查。效果系統擴展了類型的概念,使其具有一個效果組件,它包括一個效果種類和一個區域。效應種類描述了正在做的事情,而區域則描述了正在做的事情。一個效果系統通常是類型系統的擴展。在這種情況下,有時會使用類型和效應系統這個術語。通常,一個值的類型和它的效果一起被表示為類型!效果,其中類型部分和效果部分都提到了某些區域(例如,一個可變的存儲單元的類型是由該單元所在的存儲區域的標簽參數化的)。代數效應這個詞是從類型系統中衍生出來的。效應系統可以用來證明某些內部不純的定義的外部純潔性:例如,如果一個函數在內部分配和修改了一個內存區域,但該函數的類型沒有提到該區域,那么相應的效應可以從該函數的效應中抹去。

    效果系統的例子

    編輯

    可由效應系統描述的行為的一些例子包括。讀、寫或分配內存:效果種類是讀、寫、分配或釋放,區域是程序中執行分配的點(即每個執行分配的程序點都被分配一個xxx的標簽,區域信息沿著數據流靜態傳播)。大多數處理內存的函數實際上在區域變量中是多態的:例如,一個交換內存中兩個位置的函數,其類型為forallr1r2,unit!{讀r1,讀r2,寫r1,寫r2}。與資源一起工作,如文件:例如,效果種類可能是打開、讀和關閉,同樣,區域是程序中打開資源的點。與連續和長跳的控制轉移:效果種類可能是goto(即這段代碼可能執行跳轉)和comefrom(即。從程序員的角度來看,效果是很有用的,因為它允許將特定動作的實現(如何)與執行何種動作的規范分開。例如,一個詢問名字的效果可以從控制臺讀取,彈出一個窗口,或者只是返回一個默認值。控制流可以被描述為產量(即繼續執行)和拋出(即未處理的效果向下傳播直至處理)的混合。

    效果系統

    效果系統的實現

    編輯

    核心特征Koka是一種靜態類型的函數式編程語言,代數效果處理程序是其主要特征。Eff是一種靜態類型的函數式編程語言,以代數效果處理程序為中心。Unison是一種靜態類型的函數式編程語言,代數效果處理程序(在語言中稱為能力)是類型系統的核心部分。全面支持Haskell是一種靜態類型的函數式編程語言,有幾個包允許對效果進行編碼。然而,Haskell通常更專注于單體。部分支持和原型Scala3.1是一種靜態類型的、功能性的和面向對象的編程語言,對效果的實驗性支持僅限于異常,其形式是CanThrow能力。Java是一種靜態類型的、面向對象的編程語言;其檢查的異常是效果系統的一個相對有限的例子。只有一種效果--拋出--是可用的,沒有辦法用一個值來恢復,而且它們不能用于函數(只有方法),除非函數實現了一個自定義的@FunctionalInterface。JavaScript是一種動態類型的語言,它有一個實現代數效果的建議。

    內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/170713/

    (5)
    詞條目錄
    1. 效果系統概述
    2. 效果系統的例子
    3. 效果系統的實現

    輕觸這里

    關閉目錄

    目錄
    91麻精品国产91久久久久