Подтвердить что ты не робот

Функциональный javascript?

Я бы хотел использовать "язык, основанный на javascript", чтобы узнать и использовать некоторые из обычных веб-технологий сегодня, например, node.js, jquery и т.д.

После долгой работы с функциональными концепциями и языками, в основном F #, я смотрю, есть ли что-то подобное в мире Javascript. До сих пор я нашел и рассмотрел:

  • Javascript - функциональный способ. Я использую функциональные части javascript как можно больше, используя Underscore или другие функциональные библиотеки. Плюсами к этому подходу было бы изучение "родного языка". Недостатки для меня в том, что мне действительно не нравится его синтаксис и не очень естественно программировать "функциональный первый" в Javascript.
  • CoffeeScript + Underscore. Я видел несколько примеров, используя CoffeScript + Underscore, которые кажутся привлекательными. Например: http://autotelicum.github.com/Smooth-CoffeeScript/SmoothCoffeeScript.html#toc-Chapter-7
    Плюсами к этому было бы то, что CoffeScript распространяется дико и кажется стандартом deacto языков, предназначенных для его использования с javascript VM. Этот синтаксис кажется мне более естественным, и я мог бы легче программировать некоторые функции.
    Концы будут отдаляться от самого javascript (что для меня действительно не слишком много для меня) и быть в середине не по-настоящему функционального.
  • Livescript: Полученный из Coco (который сам был получен из CoffeScript), он имеет более привлекательный синтаксис для меня (он даже имеет мой любимый трубопровод '| > ' из F #). Плюсы в том, что это самый функциональный подход. Недостатки заключались бы в том, что он не очень распространен (я сделал поиск в SO, и в нём нет НИЧЕГО), и все это подразумевает (не много сообщества, поддержки, учебников и т.д.).

Подумав какое-то время обо всем этом, у меня нет настоящего концерта, поэтому было бы здорово, если бы люди привыкли работать с javascript, CoffeeScript и т.д., могли бы помочь мне в реальной важности этих проблем.
< бр /" >

На всякий случай... Я действительно не рассматривал использование Pit (и поэтому продолжайте использовать F #), потому что, хотя он компилируется в javascript, я думаю, что это не интегрируется с какой-либо библиотекой javascript, как указано выше, и не следует одному и тому же документообороту или интегрируется с экосистемой javascript, а также перечисленными опциями.

Большое спасибо!

4b9b3361

Ответ 1

Я, наверное, немного предвзятый (я создатель LiveScript), но вы должны попробовать LiveScript! В настоящее время я работаю над стандартной библиотекой, которая будет интегрироваться лучше, чем подчеркивание. Как вы говорите, их не так много, но сообщество должно начинать где-то! Как вы указали, кажется, что лучший вариант при прочих равных условиях - так что погрузитесь и попробуйте!

Ответ 2

В основном у вас есть два варианта:

  • Используйте язык, основанный на JS, например CoffeeScript
  • Используйте функциональный язык для компилятора JS

Для варианта 1, ну, вероятно, это лучший вариант для взаимодействия с другим JS-кодом. Это также ваш лучший вариант, если вы действительно хотите работать с другими разработчиками JS, которые могут быть не знакомы с <insert functional language>.

Если вы на самом деле не очень хорошо знакомы с JS, я бы предложил вариант 1. Возможно, сложно понять, как все работает, особенно если вы сталкиваетесь с ошибками в выбранном вами языке/инструменте, если вы не понимаете Основы JS.

Вариант 2 может быть более интересным для использования, поскольку вы, вероятно, получите преимущества своего любимого языка в JS. В дополнение к проекту Pit, о котором вы упоминаете, есть некоторые попытки сделать компиляцию Haskell в JS, которая также может быть вариантом.

Недостатки второго варианта - это, вероятно, тот факт, что проекты не являются (афайк) очень продвинутыми до сих пор и что они могут скомпилироваться в не очень эффективный JS-код.

Наконец, был некоторый язык в стиле Хаскелла, основанный на JS, похожий на CoffeeScript, но, похоже, я забыл его название. Это может стоить того, если кто-то может понять, что он назвал: D