два простых способа сделать это:
- fun addstring (x::xs) a = (a^x) :: addstring xs a
= | addstring [] a = []
= ;
val addstring = fn : string list -> string -> string list
- addstring ["A", "B", "C", "D"] "A";
val it = ["AA","AB","AC","AD"] : string list
Вышеупомянутое использует сопоставление с образцом, чтобы уничтожить список, выполняет операцию, а затем снова создает список, повторяя по ходу дела.
Это немного проще (если, возможно, немного сложнее для чтения, чем явные случаи в addstring.), Но оно показывает, как используется map - вы указываете функцию, которая отображает каждый элемент из источника в целевой домен, дайте ему список элементов в исходном домене, и он вернет список в целевом домене.
Конечно, ни один из них не обновляет список на месте, он возвращает новый список.