0
我想知道如何創建一個數據類型,並可以在評估一個字符串 含有(「1 + 2」)幫助SML使用的數據類型加減
我想製作一個數據類型
的datatype opp = oper of string;
datatype numm = numb of int;
datatype calc = opp | numm;
我想知道如何創建一個數據類型,並可以在評估一個字符串 含有(「1 + 2」)幫助SML使用的數據類型加減
我想製作一個數據類型
的datatype opp = oper of string;
datatype numm = numb of int;
datatype calc = opp | numm;
我想說
datatype expr = Number of int | Add of expr * expr;
沿
fun calc(Number(x)) = x
| calc(Add(x, y)) = calc(x) + calc(y);
會做的伎倆。但是,一旦開始添加更多的運算符,您需要考慮關聯性和運算符優先級。
那麼你會怎麼稱呼(1 + 3)?你會只是把calc(exp(1 + 3))抱歉,我是ML新手。 – user3312266 2014-11-03 02:17:18
@ user3312266你的'calc(Add(Number(1),Number(3)))' – 2014-11-03 03:58:36
我的理解是通常在解析器中而不是在評估器中處理關聯性和優先級。你將'2 + 3 * 8'解析成'Add(Number(2),Multiply(Number(3),Number(8)))'而不是'Multiply(Add(Number(2),Number(3)),數(8))'。評估人員相當簡單。 – 2014-11-04 22:42:31