Лекція по Хаскєлю :)
Четвер, 3 Липень 2014 01:46"ДНР", против которой украинские власти проводят АТО, проводит АТО против боевиков Безлера (Беса).
Запомните, детки: функция АТО называется рекурсивной. На языке программирования Haskell ее можно представить в виде:
где
Для того, чтобы функция завершилась, а не ушла в бесконечный цикл, необходимо определить базовый случай рекурсии:
где
Какой же тип, детки, будет у функции ato? Эта функция принимает на вход список террористов (списки, как вы помните, обрамляются квадратными скобками: [Террорист]), затем берет первый элемент этого списка и применяет к нему функцию
Таким образом, функция ato выглядит так:
Следует заметить, детки, что ту же самую функцию можно записать короче при помощи функции высшего порядка (то есть функции, которая может принимать в качестве аргументов другие функции)
Это была лекция по языку Haskell.
Запомните, детки: функция АТО называется рекурсивной. На языке программирования Haskell ее можно представить в виде:
ato (x:xs) = kill x : ato xsгде
x:xs это список террористов, x - первый элемент (голова) списка, а xs - оставшаяся часть (хвост) списка.Для того, чтобы функция завершилась, а не ушла в бесконечный цикл, необходимо определить базовый случай рекурсии:
ato [ ] = [ ]где
[ ] - это пустой список террористов, т.е. когда все террористы уничтожены.Какой же тип, детки, будет у функции ato? Эта функция принимает на вход список террористов (списки, как вы помните, обрамляются квадратными скобками: [Террорист]), затем берет первый элемент этого списка и применяет к нему функцию
kill, возвращая нам значение типа "Труп террориста", а затем применяет функцию ato к оставшейся части списка. В итоге на выходе функции мы получаем список значений "Труп террориста": [Труп террориста].Таким образом, функция ato выглядит так:
ato :: [Террорист] -> [Труп террориста]
ato [ ] = [ ]
ato (x:xs) = kill x : ato xsСледует заметить, детки, что ту же самую функцию можно записать короче при помощи функции высшего порядка (то есть функции, которая может принимать в качестве аргументов другие функции)
map, которая применяет нужную функцию к каждому элементу списка:ato :: [Террорист] -> [Труп террориста]
ato spisokTerroristov = map (kill) spisokTerroristovЭто была лекция по языку Haskell.
Підписатися на RSS