2012-11-28 59 views
0

這是家庭作業的摘錄。 「PROG 此數據類型應該只有一個構造函數,用於表示的 節目形式:哈斯克爾的構造函數

read vin1 ; read vin2 ; < some statements > write vout2 ; 

此構造,這也可以稱爲PROG,需要兩個 輸入的名稱和一個字符串一個輸出變量「。

將expProg定義爲Prog類型,並且是上面左邊的 程序的抽象語法表示。 這應該如下進行:

expProg = Prog "x" "y" <some statements> "z" 

我是新來的Haskell和我這個困惑。

我做了這樣的構造函數。然而這看起來不錯。

data Prog = Prog String String String 
    deriving (Show,Eq) 

任何人都可以解釋這是怎麼回事嗎?我不明白如何製作這個構造函數。 下面是數據類型爲我做的語句:

data Stmt = Assing String Expr 
     | WhileLoop Expr Stmt 
     | Ifthen Expr Stmt 
     | IfthenElse Expr Stmt Stmt 
     | Composition [Stmt] 
+0

待辦事項你也有一個語句的數據類型? – dflemstr

+0

是的,我們確實有數據類型的語句 –

+0

那麼,它是什麼樣子? – dflemstr

回答

5

你說你需要包括在構造「的一些聲明」爲好。目前,您只有兩個輸入變量和輸出變量的空間。只需添加一個字段的語句,例如像這樣:

data Prog = Prog String String Stmt String 
--        ^output variable 
--       ^some statements 
--      ^input variable 2 
--    ^input variable 1 

現在你可以使用它像這樣:

expProg = Prog "x" "y" (Composition [Assing "x" (...some expression...), 
            Assing "z" (...some expression...)]) "z" 

(請注意,它實際上是拼寫Assign,不Assing