2010-10-10 2 views
-1

Как объявить функцию suffixsen: string list -> string list?Объявление функции SML

+1

Закрыть. Вам действительно нужно дать некоторые подробности, вместо того, чтобы просто указывать подпись типа и ожидать, что другие будут писать код домашней работы для вас. – Gian

ответ

2

Синтаксис для определения функции с одним аргументом в SML является:

fun functionName argumentName = functionBody 

или

fun functionName (argumentName : argumentType) = functionBody 

, если вы хотите, чтобы указать тип явно. Таким образом, чтобы определить функцию с именем suffixsen типа string list -> string list, вы можете сделать:

fun suffixsen (strings : string list) = someExpressionThatReturnsAStringList 

Редактировать в ответ на вас комментарий:

Для того, чтобы добавить «сын» в каждой строке в списке, вы должны смотреть в операторе [1] ^, который объединяет строку и map function, который выполняет операцию для каждого элемента в списке.

[1] http://www.standardml.org/Basis/string.html#SIG:STRING.^:VAL (скопировать и вставить эту ссылку в браузере - по какой-то причине я не могу получить это, чтобы быть интерактивными)

+0

Я действительно не понимаю, потому что мне нужно составить список, чтобы он добавил «сын» Нравится: suffixsen ["Tom", "Peter", "John"] должен вернуться: ["Tomson", " Петерсон "," Джонсон "]. – peter81

+0

@ master09: Поскольку вы не указали, что функция должна делать в вашем вопросе, я не мог бы включить это в свой ответ. – sepp2k

+0

@master: Я отредактировал свой ответ. – sepp2k

2

После объявления типов находящихся внутри скобок, объявить функцию возвращаемого типа на внешней стороне с :return-type. По крайней мере, в SMLnj. Я нашел это через пробную версию и ошибку, не могу найти для нее документацию.

fun suffixson (xs: string list): string list = 
    map (fn x => x^"son") xs 
Смежные вопросы