トラック
/
Elm
Elm
/
演習
/
ルシアンの絶品ラザニア
ルシアンの絶品ラザニア

ルシアンの絶品ラザニア

学習演習

はじめに

基本1

定数と関数

定数の値はname = expressionのように定義します。Elmでは、定義を除くすべてが式です。

five = 5

six = 3 + 3

関数はname parameters... = expressionのように定義し、仮引数はスペースだけで区切ります。

add number1 number2 = number1 + number2

関数の呼び出しも式であり、関数名を指定して、その関数の仮引数それぞれに対応する引数をスペースで区切って渡すことで行います。書き方は関数の定義と同じです。

five = add 2 3

括弧(())を使うと、式を評価する順序を指定できます。

six = add 2 (1 * 4)

twelve = add 2 1 * 4

インデント/意味を持つ空白

Elmでは、コードの区切りを指定するために波括弧、括弧、セミコロンといった構文上の目印を使いません。代わりに空白とインデントを使います。

  • モジュール、インポート、トップレベルの関数定義は、いちばん左の列から始める必要があります。
  • 式を複数の行に分割する場合、その式の一部となっているコードは、その式の下で少なくとも1つのスペース分インデントする必要があります。
  • まとまりとしてグループ化される式の部分は、同じ数のスペースでインデントします。
-- A function split over multiple lines, so subsequent lines must be indented
add number1 number2 =
    number1 + number2

https://elmprogramming.com/indentation.html

モジュール

Elmでは、各ファイルが1つのモジュールであり、他のどのコードよりも前にmodule文を書く必要があります。 モジュール名はファイル名と一致していなければならないので、モジュールCalculatorはファイルCalculator.elmに置く必要があります。 モジュール内で定義されたものは、そのモジュールにプライベートなスコープを持ち、exposingに挙げられていない限り、このモジュールの外からはアクセスできません。

-- Define the Calculator module, and expose the `add` function
module Calculator exposing (add)

six = 3 + 3

add number1 number2 = number1 + number2
-- Define the Calculator module, and expose everything within: `six` and `add`
module Calculator exposing (..)

six = 3 + 3

add number1 number2 = number1 + number2

https://elm-lang.org/docs/syntax#modules

コメント

コメントとは、Elmファイルの中にあるテキストのうち、コードとして解釈されないものです。 主に、自分自身や他のプログラマーが読むためのものです。 1行コメントには、二重のダッシュを基にした軽量な構文があります。 複数行コメントも、開きと閉じの区切り文字のペア{-と-}を使えば可能です。

-- a single line comment
-- another single line comment

{- a multiline comment
   spawning multiple lines
-}

フォーマット

スタイルガイドがあり、elm-formatを使うとコードを自動でフォーマットできます。

説明

この演習では、お気に入りの料理本に載っている最高のラザニアを作るために、コードを書いていきます。

ラザニアの調理にかかる時間に関わる、3つのタスクがあります。

1. オーブンでの想定時間を分単位で定義する

expectedMinutesInOvenを定義して、ラザニアをオーブンに入れておくべき時間を分で計算できるようにします。料理本によると、オーブンでの想定時間は40分です。

expectedMinutesInOven
    --> 40

2. 下準備にかかる時間を分単位で計算する

preparationTimeInMinutesを定義します。これは、ラザニアの層の数を入力として受け取り、ラザニアの下準備にかかる時間を分で返します。1層あたり2分かかるものとします。

preparationTimeInMinutes 3
    --> 6

3. 経過時間を分単位で計算する

elapsedTimeInMinutes関数を定義します。この関数は2つの入力を受け取ります。1つ目の入力はラザニアの層の数で、2つ目の入力はラザニアをオーブンに入れてからの時間を分で表したものです。この関数は、ラザニアの調理に何分取り組んだかを返します。これは、下準備にかかった時間と、その時点でラザニアがオーブンにあった時間の合計です。

elapsedTimeInMinutes 3 20
    --> 26
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Elm Exercism

ルシアンの絶品ラザニアを始める準備はできましたか?

Exercismに登録すれば、28個のコンセプト110個の演習、そして本物の人間によるメンタリングとともに、Elmを学んでマスターできます。すべて無料です。