Если ваша основная цель - работать с подростками, имеет смысл использовать функциональную язык педагогику и технологию, которая доказана работать с подростками, и это PLT схема ] (aka drscheme) с Как проектировать программы Книга (также бесплатно онлайн). Эти ребята получили отличные результаты из средней школы через 3-й семестр университета. У них есть ресурсы для учителей .
Многие респонденты, такие как SICP. Это замечательная книга - но не Узнать . Если вы уже знаете схему, это хорошая книга к Actire , но SICP меньше о функциональном программировании и более о том, как реализовать все известные интересные компьютерные идеи на схеме.
Если ваша основная цель состоит в том, чтобы узнать действительно новую парадигму программирования, то схема не хватает некоторых функций, которые очень важны для многих функциональных программистов:
Если вы хотите захватывающие идеи, попробуйте HASKELL ; Haskell делает для вас намного сложнее программировать свои старые мысли на новом языке. Вместо этого Haskell заставляет вас думать новые мысли. Помимо многих других ресурсов, Real World Haskell бесплатно онлайн.
Заключительное примечание: так было много подобных вопросов на функциональном программировании обучения.
I 'M Большой поклонник схемы, не в последнюю очередь, потому что лучшая книга на нее свободно доступна.
Поскольку вы уже знакомы с Python, почему бы просто не использовать его функциональные возможности? Подробнее см. в этом (черновике) HowTo .
Я попробую Scala. Это не чисто функционально, это позволяет использовать различные подходы - но большая часть ваших знаний Java должна портировать (это JVM), включая библиотеки JDK, и это один из самых передовых языков, которые я когда-либо видел.
Если вы заинтересованы в языках изучения функций и расширение ваших знаний о том, насколько языками работают, я не мог представить себе лучшую альтернативу.
SCALA и CLOJURE Обе запускают JVM, чтобы вы могли быть более знакомы с их средами.
Мой вопрос - какой подход может быть лучшим для подростков, с которыми вы работаете. Если они готовы узнать что-то новое и другое, схема - отличный выбор в качестве функционального языка. Это так же простое, как они приходят. Если вы хотите сохранить более знакомый синтаксис, Haskell может быть вашим ответом.
Мой голос отправляется в Scala или F #, которые на данный момент свободно загружаются.
Преимущество вот в том, что они являются смешанными языками парадигмы - это функциональные языки, но вы также можете использовать императивное и объектно-ориентированное программирование. У них также есть большие стандартные библиотеки - Scala Rides на задней части Java и F # имеет все .NET, так что вы можете запрограммировать что-то интересное справедливо.
Схема и haskell - это как чистые функциональные языки, но, к сожалению, их стандартные библиотеки относительно невелики, поэтому его жестко выполняет относительно распространенные вещи, такие как анализ XML или сканирующих веб-страниц.
Если вы делаете это для обучения, то определенно схема с SICP . Это будет трудно и разочаровывать и взорвать ваш разум, если у вас нет опыта с этим материалом, но вы многое узнаете.
Если вы хотите использовать функциональное программирование на практике, то F #, Scala и Clojure стоит смотреть.
Я голосую за Haskell, который имеет следующие преимущества: