Elm:
Организация кода в функции

Как это сделать:

Вот фрагмент кода на Elm с простой функцией для приветствия пользователя:

module Main exposing (..)

import Html exposing (text)

greetUser : String -> String
greetUser userName =
    "Привет, " ++ userName ++ "!"

main =
    text (greetUser "Кейси")

Запустите его, и вы получите вывод: “Привет, Кейси!”

Теперь предположим, вы хотите добавить больше персонализации. Извлеките больше функциональности!

module Main exposing (..)

import Html exposing (text)

greetUser : String -> String -> String
greetUser greeting userName =
    greeting ++ ", " ++ userName ++ "!"

personalGreeting : String -> String
personalGreeting userName =
    greetUser "Приветствую" userName

main =
    text (personalGreeting "Кейси")

Теперь, когда вы запустите его: “Приветствую, Кейси!” Магия? Нет, просто функции делают своё дело.

Глубокое погружение

В прошлые времена код часто представлял собой одну длинную последовательность инструкций (подумайте о спагетти-коде). Это был кошмар для поддержки. Затем появилось структурированное программирование, и вместе с ним, функции. Elm, подобно его предшественникам в функциональном программировании, во многом полагается на функции для организации.

Вы можете вкладывать функции, создавая замыкания, или держать их чистыми для простоты. Elm поощряет последнее: чистые функции с чётко определенными входами и выходами, что приводит к более легкому отладке и тестированию.

Функции Elm также могут быть высшего порядка, то есть они могут принимать или возвращать другие функции. Это открывает мир компонуемости. Однако, в отличие от некоторых других языков, Elm не имеет перегрузки функций; каждая функция должна иметь уникальное имя.

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

По сравнению с альтернативами, такими как процедурная или объектно-ориентированная организация кода в других языках, подход Elm подчёркивает простоту и предсказуемость. В Elm нет объектов или классов. Вы организуете код с помощью функций и модулей вместо классов и экземпляров.

Смотрите также

Для более глубокого изучения ознакомьтесь с этими ресурсами: