コードを関数に整理する

Elm:
コードを関数に整理する

どうやるか:

以下は、ユーザーに挨拶するシンプルな関数を含むElmコードの一部です:

module Main exposing (..)

import Html exposing (text)

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

main =
    text (greetUser "Casey")

これを実行すると、出力は「Hello, Casey!」になります。

さて、もっとパーソナライズを加えたいとします。さらに機能を抽出しましょう!

module Main exposing (..)

import Html exposing (text)

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

personalGreeting : String -> String
personalGreeting userName =
    greetUser "Howdy" userName

main =
    text (personalGreeting "Casey")

これを実行すると、「Howdy, Casey!」となります。魔法?いいえ、機能がその役割を果たしています。

深堀り

昔の日、コードはしばしばインストラクションの長いシーケンスでした(スパゲッティコードを考えてください)。それは保守の悪夢でした。その後、構造化プログラミングが登場し、それに伴って機能が付きました。Elmは、その関数型プログラミングの先駆者のように、組織化のために関数に大きく依存しています。

関数は、クロージャを作成するためにネストすることも、または単純さのために純粋に保つこともできます。Elmは後者を奨励します:よく定義された入出力を持つ純粋な関数は、デバッグとテストを容易にします。

Elmでは、関数を高階とすることもできます。つまり、他の関数を受け取るか、または返すことができます。これにより、構成可能性の世界が広がります。ただし、他の言語とは異なり、Elmには関数のオーバーロードはありません。各関数はユニークな名前である必要があります。

さらに、Elmは強力な静的型付けシステムを課しており、型をチェックするだけでなく、推測もします。これにより、ボイラープレートコードが減ります。

他の言語での手続き型やオブジェクト指向コードの組織と比較すると、Elmのアプローチは単純さと予測可能性を強調しています。Elmにはオブジェクトやクラスがありません。クラスやインスタンスの代わりに、関数とモジュールでコードを組織します。

参照

さらに深く掘り下げるために、これらのリソースをチェックしてください:

  • 関数についてのElmの公式ガイド:https://guide.elm-lang.org/core_language.html
  • より複雑な関数の例のためのElmパッケージドキュメント:https://package.elm-lang.org/
  • 関数の組織化と良く合うElmの型システムについて学ぶ:https://elm-lang.org/docs/types