2017-05-01 71 views
0

如果我想檢查一個字符串是否以字母開頭,其餘的字符可以是字母或數字,我將如何定義由這些條件定義的數據類型?或者模式匹配是更好的路線,如果是的話,我將如何檢查?在SML中定義類型?

+0

你真的不會定義一個*數據類型*來定義它。相反,編寫一個類型爲'string - > bool'的函數來驗證條件。提示:它*以一個字母*開始,並且''alalso' *字符串的其餘部分有一個特定的屬性*。查看字符串和字符上的一些SML標準庫函數。您可以將字符串分解爲字符列表,並驗證列表的頭部是否滿足一個屬性,列表的尾部是否滿足另一個屬性。 –

+0

那麼我的功能會如何呢? '樂趣isName(S:字符串):布爾= VAL EXP = String.explode(S) \t如果((是字母(HD EXP))andalso地圖(isAlphaNum,TL EXP),那麼真正的 \t其他FALSE' – arizq29

+0

還是應該它是沿此線更'好玩isName?(S:字符串):布爾= VAL EXP = String.explode(S) \t如果是字母(HD EXP),然後 \t讓 \t樂趣CHK(X :: XS)=如果isAlphaNum那麼X CHK(XS) \t \t \t \t別的假 \t | CHK([])=真 \t in \t chk(tl(exp)) \t end \t else else' – arizq29

回答

0

如果你不關心使用String.explode是有點低效率的,那麼你可以定義此斷言:

fun isName s = List.all Char.isAlpha (String.explode s) 

否則,你在(長度),通過遞歸執行它的字符串本身。