2012-11-28 1 views
0

이것은 숙제에서 발췌 한 것입니다. "PROG 이 데이터 타입은 하나의 생성자가 있어야하고 의 프로그램 형태로 표현하기 위해 사용되는 :하스켈에서 생성자

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

또한 음식물을 이름을 지정할 수 있습니다이 생성자은, 두 입력의 이름과에 대한 문자열을 걸립니다 하나의 출력 변수. "

expProg를 Prog 유형으로 정의하고 위의 왼쪽에있는 프로그램의 추상 구문 표현으로 정의하십시오. 이것은 다음과 같이 수행해야합니다 :

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

내가 하스켈에 새로운 오전이 혼란스러워하고있다.

이렇게 생성자를 만들었습니다. 그러나이 doesnt는 바르게 보인다.

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

할 일을 (그것이 실제로 Assign을 철자 것을 Assing을하지 참고) 당신은 진술을위한 데이터 유형을 가지고 있습니까? – 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"