Решаем полиномиальное уравнение на Lisp, но не Common

Джон Маккарти в самом первом Лиспе использовал ровно семь операторов: quote, atom, eq, car, cdr, cons и cond. Этого достаточно, чтобы построить полноценный язык, но далеко не всегда достаточно, чтобы писать на нем было легко и приятно. Common Lisp, для сравнения, включает в себя около тысячи примитивов и все равно в нем не хватает многих вещей вроде iota или close-all-ports. Тем не менее, минимализм Лиспа очарователен. Весьма несложно разобраться в синтаксисе языка с семью операторами. Сделать собственную релизацию — тоже довольно просто. Увы, в конечном счете, именно эта простота и послужила Лиспу дурную службу. Слабая совместимость реализаций и откровенно непривычный подход к программированию, не говоря уже о скобках (с непривычки скобки действительно ломают мозг (тем более вложенные)) — это как раз то, что составляет общественное мнение о языке. Common Lisp, собственно, и есть попытка привести множество реализаций под один знаменатель, обеспечить более привычные и удобные идиомы (оставив в языке скобки (к скобкам быстро привыкаешь)). Но сейчас не про него. На примере программки для нахождения вещественных корней полиномиального уравнения я бы хотел показать, что и минималистичный Лисп тоже заслуживает право на жизнь.Читать дальше →

© Habrahabr.ru