Доброго времени суток всем читающим!
В книге Haskell school of expression нашел такое упражнение:
Define a function regularPolygon::Int->Side->Shape such that regularPolygon n s is a regular polygon with n sides, each of length s.
Предполагается, что функция в своей работе создает список вершин [(Float, Float)].
В императивных языках это делается циклом, например:
import math
from math import pi, cos, sin
def regularPolygon(s, n):
vertices = [(0, 0)]
angle = 2 * pi / n
for i in range(n):
vertices.append((vertices[-1][0] + s * cos(angle * i), vertices[-1][1] + s * sin(angle * i)))
return vertices
Как это можно реализовать при помощи
только рекурсии, let, where и тригонометрических функций (пример приведен в самом начале книги, и у новичка в Haskell кроме этих инструментов ничего нет)?
Люди! Люди, смотрите, я сошел с ума! Люди! Возлюбите друг друга! (вы чувствуете, какой бред?)