Вы можете использовать сопоставление с образцом, чтобы проверить, является ли первый элемент в вашем списке четным, и если это так, добавить его в список аккумуляторов и вызвать тот же метод в остальной части списка. Если элемент нечетный - просто вызовите тот же метод для остальной части списка, не добавляя ничего к аккумулятору. Когда список пуст - верните аккумулятор, и у вас будет список только четных чисел.
let rec getEven (input : int list) (acc: int list) =
match input with
| head :: tail when head % 2 = 0 -> (getEven tail (head :: acc))
| head :: tail when head % 2 = 1 -> (getEven tail (acc))
| _ -> acc
let even = getEven [1..10] []
let sum = List.sum even
Приведенная выше функция даст:
val getEven : input:int list -> acc:int list -> int list
val even : int list = [10; 8; 6; 4; 2]
val sum : int = 30
P.S. чтобы вычислить сумму элементов, вы должны использовать List.sum
вместо List.length
, который вернет вам количество элементов в списке. Также обратите внимание, что вы можете вычислить сумму четных элементов в функции getEven, сохраняя не список четных элементов, а их сумму.
Заглянуть
Запустите-> Средства администрирования-> Сервисы
в том списке необходимо видеть Сервис Apache (предполагающий установку его как услуга),
Щелкните правой кнопкой по свойствам, вкладка Log On должна сказать Вам, которые она вошла в систему как.
Вы попытались дать "Всех" - групповой доступ к файлам? Не забывайте сбрасывать эту установку в производстве.
Для наблюдения который пользовательские апачские выполнения под используйте диспетчер задач.
Это кажется, что проблема разрешения для пользовательского Apache работает под.
При проверке рабочих процессов необходимо видеть Apache и пользователя, под которым он работает. Необходимо смочь дать то пользовательское разрешение записи.