Elm_guide_Core-Language
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[Program]] > [[JavaScript]] > [[AltJS]] > [[Elm]] > ...
#norelated
#contents
//----------------------------------------
*言語の基礎 [#bc154f16]
-言語の基礎 · An Introduction to Elm https://guide.elm-la...
>REPLを使って実際に手を動かしながら読み進めていくと理解し...
ElmのREPLを使って、文法の基礎を確認していきましょう。
Windowsならコマンドプロンプトで
elm repl
と入力します。
//----------------------------------------
*値 [#s057cf66]
**文字列 [#m666e6c7]
-文字リテラルは「"」(ダブルクオーテーション)で囲む。
-文字の連結は「++」という演算子を使う。
「+」じゃなくて「++」という別の演算子を用意しているところ...
-「+」は数値用
-「++」は文字用
という割り切りがある?
**数値 [#vf29fa3a]
>JavaScriptとは異なり、Elmは整数と浮動小数点数を区別しま...
ちょうどPython 3と同じように、浮動小数点数の除算(/)と整数...
-「/」は整数の割算用
-「//」は浮動小数点の割算用
//----------------------------------------
*関数 [#e9ac1d80]
ElmはHaskellっぽい書き方をする、と理解しておけば良いでし...
書式
関数名 引数 = 関数の本体
例
isNegative n = n < 0
**無名関数 [#j57fa41d]
Haskellのラムダ式と同じですね。
ラムダ(λ)の代わりに、バックスラッシュ(¥)を使います。
書式
\引数 -> 関数の本体
例
> \n -> n < 0
<function>
> (\n -> n < 0) 4
False
//----------------------------------------
*条件分岐 [#j0f02683]
if式の書式
> if True then "hello" else "world"
"hello"
> if False then "hello" else "world"
"world"
Haskellのifではelseを省略できません。
Elmも同様にifでelseを省略できません。
REPLでif式を書いてthen部分までしか書かないでリターンキー...
(参考)
-Elmの関数型的側面の多分ていねいな解説 - Qiita https://qi...
>elseは省略できません。
-構文のほとんどが式でとってもシンプルなプログラミング言語...
>Elmでは実行時エラーが原則起きません。これは分岐漏れをコ...
//----------------------------------------
*データ構造 [#g9e28fda]
普通のプログラミング言語にあるデータ構造(配列など)は、E...
**リスト [#dc3f32a9]
>リストは複数の値を持つことができますが、それらの値はすべ...
-リストの書式
「[」と「]」で括り、「,」で要素を区切る
-リストの例
> names = [ "Alice", "Bob", "Chuck" ]
> numbers = [1,4,3,2]
**タプル [#m78502bf]
>タプルは固定された個数の値を保持することができ、それらの...
典型的な使いかたとしては、関数からふたつ以上の値を返す必...
-タプルの書式
「(」と「)」で括り、「,」で要素を区切る
-タプルの例
(True, "name accepted!")
**レコード [#y8096443]
Elmのレコードは連想配列ですね。
>レコードは任意個のフィールドを持っていて、それぞれのフィ...
ただしElmのレコードのフィールドは固定されていて、レコード...
-レコードの書式
「{」と「}」で括り、「,」で要素を区切る
各要素は、「フィールド名=データ」という形になっている
-レコードの例
> point = { x = 3, y = 4 }
> bill = { name = "Gates", age = 62 }
> bill.name
"Gates"
***レコードとオブジェクトの比較 [#m07f9b93]
Elmのレコードには、いくつかの特徴、注意点があります。
>ElmのレコードはJavaScriptのオブジェクトと似ていますが、...
-存在しないフィールドにアクセスすることはできません。
-フィールドが undefined や null になることもありません。
-this や self キーワードを使って再帰的なレコードを作るこ...
//----------------------------------------
*Elmには破壊的な再代入がない [#g34c4cfa]
Elmのデータ構造は破壊的な再代入はできない、とのこと。
参照透過性を維持する関数型言語なら普通のことですね。
>この構文ではレコードの破壊的な更新をしているのではないこ...
billのフィールドを更新したとき、実際には既存のレコードを...
効率のため、Elmは新しいレコードの内容を古いレコードとなる...
つまり10個のフィールドのうちひとつを更新したとしたら、残...
(参考)
-constと副作用とワイ - Qiita https://qiita.com/Yametaro/i...
>ワイ「Elmではそもそも再代入する術がないんか」
ワイ「もう再代入やなくて名前の衝突やねんな」
ワイ「再代入いう概念がないねんな」
終了行:
[[Program]] > [[JavaScript]] > [[AltJS]] > [[Elm]] > ...
#norelated
#contents
//----------------------------------------
*言語の基礎 [#bc154f16]
-言語の基礎 · An Introduction to Elm https://guide.elm-la...
>REPLを使って実際に手を動かしながら読み進めていくと理解し...
ElmのREPLを使って、文法の基礎を確認していきましょう。
Windowsならコマンドプロンプトで
elm repl
と入力します。
//----------------------------------------
*値 [#s057cf66]
**文字列 [#m666e6c7]
-文字リテラルは「"」(ダブルクオーテーション)で囲む。
-文字の連結は「++」という演算子を使う。
「+」じゃなくて「++」という別の演算子を用意しているところ...
-「+」は数値用
-「++」は文字用
という割り切りがある?
**数値 [#vf29fa3a]
>JavaScriptとは異なり、Elmは整数と浮動小数点数を区別しま...
ちょうどPython 3と同じように、浮動小数点数の除算(/)と整数...
-「/」は整数の割算用
-「//」は浮動小数点の割算用
//----------------------------------------
*関数 [#e9ac1d80]
ElmはHaskellっぽい書き方をする、と理解しておけば良いでし...
書式
関数名 引数 = 関数の本体
例
isNegative n = n < 0
**無名関数 [#j57fa41d]
Haskellのラムダ式と同じですね。
ラムダ(λ)の代わりに、バックスラッシュ(¥)を使います。
書式
\引数 -> 関数の本体
例
> \n -> n < 0
<function>
> (\n -> n < 0) 4
False
//----------------------------------------
*条件分岐 [#j0f02683]
if式の書式
> if True then "hello" else "world"
"hello"
> if False then "hello" else "world"
"world"
Haskellのifではelseを省略できません。
Elmも同様にifでelseを省略できません。
REPLでif式を書いてthen部分までしか書かないでリターンキー...
(参考)
-Elmの関数型的側面の多分ていねいな解説 - Qiita https://qi...
>elseは省略できません。
-構文のほとんどが式でとってもシンプルなプログラミング言語...
>Elmでは実行時エラーが原則起きません。これは分岐漏れをコ...
//----------------------------------------
*データ構造 [#g9e28fda]
普通のプログラミング言語にあるデータ構造(配列など)は、E...
**リスト [#dc3f32a9]
>リストは複数の値を持つことができますが、それらの値はすべ...
-リストの書式
「[」と「]」で括り、「,」で要素を区切る
-リストの例
> names = [ "Alice", "Bob", "Chuck" ]
> numbers = [1,4,3,2]
**タプル [#m78502bf]
>タプルは固定された個数の値を保持することができ、それらの...
典型的な使いかたとしては、関数からふたつ以上の値を返す必...
-タプルの書式
「(」と「)」で括り、「,」で要素を区切る
-タプルの例
(True, "name accepted!")
**レコード [#y8096443]
Elmのレコードは連想配列ですね。
>レコードは任意個のフィールドを持っていて、それぞれのフィ...
ただしElmのレコードのフィールドは固定されていて、レコード...
-レコードの書式
「{」と「}」で括り、「,」で要素を区切る
各要素は、「フィールド名=データ」という形になっている
-レコードの例
> point = { x = 3, y = 4 }
> bill = { name = "Gates", age = 62 }
> bill.name
"Gates"
***レコードとオブジェクトの比較 [#m07f9b93]
Elmのレコードには、いくつかの特徴、注意点があります。
>ElmのレコードはJavaScriptのオブジェクトと似ていますが、...
-存在しないフィールドにアクセスすることはできません。
-フィールドが undefined や null になることもありません。
-this や self キーワードを使って再帰的なレコードを作るこ...
//----------------------------------------
*Elmには破壊的な再代入がない [#g34c4cfa]
Elmのデータ構造は破壊的な再代入はできない、とのこと。
参照透過性を維持する関数型言語なら普通のことですね。
>この構文ではレコードの破壊的な更新をしているのではないこ...
billのフィールドを更新したとき、実際には既存のレコードを...
効率のため、Elmは新しいレコードの内容を古いレコードとなる...
つまり10個のフィールドのうちひとつを更新したとしたら、残...
(参考)
-constと副作用とワイ - Qiita https://qiita.com/Yametaro/i...
>ワイ「Elmではそもそも再代入する術がないんか」
ワイ「もう再代入やなくて名前の衝突やねんな」
ワイ「再代入いう概念がないねんな」
ページ名: