2013-01-18 76 views
0

據我所知在Simple ML中,元組通過#n s被訪問,而以前我已經看到它正在工作,但現在它不起作用!SML元組訪問

我已經試過這下面一行:

val a =#2 ("one", "2", "three") 

但它給我下面的錯誤回:

first.sml:25.26 Error: syntax error found at EOF 

uncaught exception Compile [Compile: "syntax error"] 
    raised at: ../compiler/Parse/main/smlfile.sml:15.24-15.46 
      ../compiler/TopLevel/interact/evalloop.sml:44.55 
      ../compiler/TopLevel/interact/evalloop.sml:296.17-296.20 
- 

奇怪!

+1

我想編譯器會將'=#2'解釋爲一個符號名稱(#和=也可以是標識符的一部分)。嘗試在'='和'#'字符之間放置空格。 –

回答

1

標準ML允許您定義您自己的任意運算符。這意味着當你混合使用中綴和前綴運算符時,你需要在它們之間有空格 - 否則它們會被解釋爲一個運算符。

換句話說,SML認爲你試圖在代碼中調用不存在的=#運算符。如果您在=#之間添加一個空格,它將正常工作。