2012-11-24 2 views
0

SML 형식 값을 인쇄하려고했지만 성공하지 못했습니다. 아래 코드를 살펴보고이를 해결하기 위해해야 ​​할 일을 알려주십시오. 감사합니다. .형식 불일치로 인해 SML에서 인쇄 오류가 발생했습니다.

stdIn:175.1-175.9 Error: operator and operand don't agree [tycon mismatch] 
    operator domain: string 
    operand:   expr 
    in expression: 
    print p 

내가 조합 및 주물하지만 성공을 많이 시도 :

(* Language Definition *) 
datatype = Id of string; 

(* Expression Definition *) 
datatype expr = 
Var of ident 
| Num of int 
| Plus of expr * expr 
| Paren of expr; 

val p = Id "x"; 
val p = Var p; 
print(p); 

내 오류입니다.

+0

'데이터 유형 = 문자열의 이드,'이해가되지 않습니다 - 당신은 당신의 데이터 타입에 이름을 지정해야합니다. 분명히이 오류가 없으므로 stackoverflow에서 코드를 입력했을 때 실수 일 수 있습니다. – Tayacan

답변

2

컴파일러가 말하려고하는 것처럼 print은 문자열을 인쇄하는 데만 사용할 수 있습니다. 특정 유형을 인쇄하려면 데이터 유형에 맞게 인쇄 기능이 필요합니다. 아프다. 알아.

이 시도 :

fun print_expr (Var (Id name)) = print name 
    | print_expr (Num n) = print (Int.toString n) 
    | print_expr (Plus (lhs, rhs)) = (print_expr lhs; print " + "; print_expr rhs) 
    | print_expr (Paren e) = (print "("; print_expr e; print ")") 
print_expr p; 
+0

[This] (http://mlton.org/TypeIndexedValues) MLton "article"관련 항목 : –

관련 문제