Вроде про GraphQL и Elm...
На самом деле...
Managing complexity is the most important technical topic in software development. In my view, it's so important that Software's Primary Technical Imperative has to be managing complexity. Complexity is not a new feature of software development.― Steve McConnell, Code Complete
Слово создателю
return
и множественный возвратnull
undefined
NaN
return
и множественный возврат → Единичный возврат без returnnull
, undefined
, NaN
→ Явная обработка (Maybe
/Option
)A delightful language for reliable web applications.
Для моделирование предметной области.
Пример: да-нет.
type Bool = True | False
if isReady then go() else stop()
Пример: светофор.
type TrafficLights = Red | Yellow | Green
tlAction tl =
case tl of
Red -> "Stop"
Yellow -> "Prepare"
Green -> "Go"
Пример: загрузка данных
Пример: загрузка данных
type RemoteData error value
= NotAsked
| Loading
| Failure error
| Success value
Пример: загрузка данных
viewPostsOrError model =
case model.posts of
RemoteData.NotAsked ->
text ""
RemoteData.Loading ->
h3 [] [ text "Loading..." ]
RemoteData.Success posts ->
viewPosts posts
RemoteData.Failure httpError ->
viewError (buildErrorMessage httpError)
Пример: GraphQL
type alias User =
{ name : Maybe String
, account : Eos.Name
, avatar : Avatar
}
selectionSet =
SelectionSet.succeed User
|> with User.name
|> with User.account
|> with (Avatar.selectionSet User.avatar)
из бэкенда в IDE у фронтенда
Подробнее в этом докладе.
Библиотека elm-graphql.
Когда есть разработчики, которые могут это обосновать.
Когда нет уже никаких сил поддерживать кодовую базу на JS.
— Что наша жизнь?.. 🤔
— Trade-off 🤷🏻♂️
А функциональное программирование уже затем учить следует, что оно ум в порядок приводит.
— М.В. Ломоносов
*это всё уже было, только не в вебе
Лучшие технологии — те, которые экономят время, силы и деньги. — Капитан
Спасибо