LINUX.ORG.RU

Ух ты, сегодня первый раз узнал про PureScript.

Я тебе могу сказать, почему даже минимально отличающиеся от JS языки не будут популярны в индустрии. Тебе нужно за два дня сделать ${featurename}, ты ищешь готовые решения, но почти все готовые решения - на JS. Чтобы начать их использовать в Elm, нужно писать прослойку, а для сложных интерфейсов прослойка будет солидной толщины.

Использовать для коммерческих проектов Elm можно, если ты будешь уверен в том, что найдешь кодеров, которые будут на этом языке писать. А таковых — на один два порядка меньше чем тех, что готовы писать на JS.

byko3y ()
Ответ на: комментарий от CryNet

Вообщем расклад такой:

Typescript - это ублюдский сишарп в браузере. Purescript/elm - haskell. Тот же coffeescript был копией Ruby. Пиарят весь этот мусор только смузихлебы и какие-то дебилы клинические для которых статические типизация сложна для осознания. Виной всему популярность веба, но бывает и обратная ситуация когда так называемые веб-макаки лезут в программирование контролеров (arduino)

tz4678 ()
Ответ на: комментарий от tz4678

Так падажи:

Пиарят весь этот мусор… дебилы клинические для которых статические типизация сложна для осознания

В том же TypeScript строгая типизация (в других наверняка тоже). То наоборот, фронт-енд разработчики хотят строгую типизацию, раз сами себе клепают тот же TypeScript.

CryNet ★★★ ()

Воспользовался бы поиском по форуму, что-ли, результатов-то мало. На самом лоре никого, кто бы писал на Elm или PureScript за деньги нет.

Elm ещё можно как-то in the wild (раз, два, три, четыре) заметить. Касательно него ИТТ просто феерический парад тупости: готовые компоненты и целые UI-киты есть, например. GraphQL даже есть! Правда, меня лично от использования Elm отталкивает максимально ущербный интероп с JS и необходимость замыкать на Elm вообще весь фронтенд, без адекватной возможности, например, частично переводить на него существующее приложение на React.

PureScript банально слишком сырой, хотя он представляет значительно более широкое подмножество хашкаля и спокойно подгружаем в вебпаке (привет, ClojureScript!), например. Компилятор высирает самые обычные CommonJS-модули, что позволяет использовать экспортируемые оттуда функции и данные в существующей кодовой базе на JavaScript. Вот это:

module Main where

import Prelude
import Control.Monad.Eff.Console (log)
import TryPureScript (render, withConsole)

showPerson o = o.lastName <> ", " <> o.firstName

main = render =<< withConsole do
  log $ showPerson 
    { firstName: "John"
    , lastName: "Smith"
    , age: 30
    }

компилируется в это:

"use strict";
var Control_Bind = require("../Control.Bind");
var Control_Monad_Eff = require("../Control.Monad.Eff");
var Control_Monad_Eff_Console = require("../Control.Monad.Eff.Console");
var Data_Function = require("../Data.Function");
var Data_Semigroup = require("../Data.Semigroup");
var Prelude = require("../Prelude");
var TryPureScript = require("../TryPureScript");

var showPerson = function (o) {
    return o.lastName + (", " + o.firstName);
};

var main = Control_Bind.bindFlipped(Control_Monad_Eff.bindEff)(TryPureScript.render)(TryPureScript.withConsole(Control_Monad_Eff_Console.log(showPerson({
    firstName: "John", 
    lastName: "Smith", 
    age: 30
}))));
module.exports = {
    main: main, 
    showPerson: showPerson
};

Правда, количество юзкейсов сужается до написания просто более надёжных компонентов приложения. Коммьюнити сильно меньше, и похоже, что оно не особо намерено продвигать PureScript как надёжный язык в массы.

Что выбрать (для создания торговой площадки)?

Имхо лучше написать на TypeScript: у тебя и так будет возможность написать надёжный код, который тщательно проверит тайпчекер. У тебя будут алгебраические типы данных, типы-литералы, полноценный параметрический полиморфизм, перегрузки любой (на самом деле, не совсем любой) степени шибанутости, но при это ты сможешь спокойно на это всё натянуть React, время на изучение которого на порядок меньше, чем у Elm или PureScript. Maybe и Either можешь взять отсюда.

Princesska ()

purescript — не для продакшна. Ещё можно потыкать reasonml. В общем, elm — это такой хаскелеподобный DSL для UI, reasonml — замаскированный окамл, к которому обычно идёт bucklescript, дающий хоть какой-то интероп с JS.

Если у тебя есть либо планируется команда веб-разработчиков — скорее всего, typescript будет пределом того, что стоит юзать в продакшне. Конечно, если у тебя не команда хаскелистов, которые хотят что-то для веба, тогда elm ок.

x3al ★★★★★ ()

PureScript - вечный proof of concept и avoid success at all cost. Борщ not included. Elm - неадекватный автор с комплексом бога-императора. Бери оба, не ошибёшься.

anonymous ()
Ответ на: комментарий от CryNet

TypeScript

Не относится, это практически ES6 с типами позволяющих статическую валидацию, никаких биндингов для игтеграции стороннего js кода ненужно, просто берешь и используешь любую библиотеку.

anonymous ()