Im пытается написать функцию, которая выполняет следующие действия, принимает в:Использование «пусть», чтобы назначить кортеж значения в SML
[ #"t" ,#"h" ,#"e" ,#" " ,#"c" ,#"a" ,#"t" ]
Ниже выход:
([#"t" ,#"h" ,#"e" ] , [#" " ,#"c" ,#"a" ,#"t" ])
до сих пор у меня есть ..
fun isLetter c = #"a" <= c andalso c <= #"z";
//(this works fine and is used within the main function wordPop)
fun wordPop [] = ([],[])
| wordPop (hd::tl) = if not (isLetter hd)
then ([], hd::tl)
else (* ...not too sure... (1) *)
Я знаю, что я должен сделать что-то, что выглядит, как это в (1)
let (wordPop tl) in (x,y) end;
и как-то добавить hd в x. Но не на 100% уверен, как это сделать.
кажется, что вы пытаетесь разделить список на пару половинок, и в этом случае тот факт, что это список символов не имеет значения. Возможно, вы можете объяснить, что вы пытаетесь сделать более четко. –
Хорошо, мне дана фраза, эта фраза находится в форме ввода, показанного выше. Я должен разбить этот вход на кортеж, где первая в паре является первым словом во фразе, а вторая в паре - остальная часть фразы. Я не уверен, что это достаточно ясно, извините, я не так хорош со словами. – James
, так что вы можете видеть, что я проверяю, является ли первое значение в списке буквой или нет (если это не тогда, это пространство, в этом случае это конец первого слова), если это тогда, мне нужно быть в состоянии шаг, хотя функция создания новых кортежей, поскольку я иду с самой современной фразой. то после того, как он достигнет символа, отличного от буквы, он должен вернуть кортеж. – James