Добавление того или обоих из следующих #defines исключит часто ненужные заголовочные файлы и может существенно улучшить время компиляции особенно, если код, который не использует Windows API functions.
#define WIN32_LEAN_AND_MEAN
#define VC_EXTRALEAN
У меня есть некоторые ресурсы SML, отмеченные закладками:
Программирование в стандартном ML '97: интерактивное руководство
Элементарный стандартный ML (Amazon Kindle)
Элементы Программирование машинного обучения (amazon.com)
Для упражнения, которое вы упомянули, подумайте о функции add
, которая возвращает новый список вместо изменения существующего, и подумайте, как бы вы рекурсивно реализовали это упражнение в ваш любимый язык высокого уровня, это будет первым шагом.
Вам не нужно использовать map
или любую другую существующую функцию ML более высокого порядка! Это просто ярлыки для опытных программистов. Используйте только сопоставление с образцом и рекурсию. Но вы можете посмотреть на реализацию таких функций, как map
, если вам нужны примеры хорошо используемой рекурсии и сопоставления с образцом.
Рекурсия по нескольким отдельным спискам беспорядочная (но, конечно, это может быть то, что требуется для этого упражнения) - обычно легче создать один список из них обоих («бок о бок», так что в вашем случае каждая запись будет иметь пару целых чисел), а затем сопоставить или свернуть это. Я подозреваю, что в ML будет функция, называемая чем-то вроде "zip", которая должна помочь вам начать работу.
Кроме того, это не совсем то, что вы ищете в данный момент, но если вам нужна хорошая книга по ML (на самом деле это диалект OCaml, но достаточно взрослый, чтобы не сильно отличаться от SML), тогда посмотрите на Cousineau + Mauny. Может быть, если у тебя есть время в отпуске. Это действительно хорошая книга - немного похожа на SICP, но для машинного обучения.
Программирование на стандартном машинном языке проф. Робертом Харпером из CMU