This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 5 years have passed since last update.

Elm in Action, chapter 1: Welcome to Elm

Last updated at Posted at 2016-12-02

"Elm in Action"、 ch.1 "Welcome to Elm"

以下この章読んで学んだこと

  • 本の最初のリリース(V01)が出た時点でざっくり読んでる(結構忘れてるが)。今回再読して学んだことなど

richardがelm試して心奪われたポイント

  • reactベースのアプリを見よう見まねで書き直し
    • コンパイラに導かれて書き換えていった
  • リファクタしてるときに一気に心奪われた

elmが向いてるプロジェクト、向いてないプロジェクト

ポジショントーク成分薄めでよい

  • 向かない
    • 納期あってスケジュールタイトなやつ
    • プロトタイプ作り(長期間メンテしないプロジェクト)
      • 慣れてる言語でやる方が適切
    • 既存のパッケージ、ソリューションの合体させる系のプロジェクト
  • 向いてる
    • 長期間育て、コードベースの規模がどんどん大きくなるプロジェクト

会社でElm導入してどうなったか

  • フロントエンジニアは今が一番ハッピー
  • テストスイートも小さくなった
  • プロダクトの信頼性はアップした

string literal とcharacter literalの違い

  • stringは文字数ゼロ""でも、1文字"x”でもok
  • characterは常に1文字じゃないとエラー

elmにはearly returnがない

そもそもreturnがないのだが、そこの説明がよかった

  • jsでみかけるif(!str) return; というのが存在しない
  • Elmは全てが式。アプリも巨大な式
    • if...elseも、Elmでは式
  • 式は評価されると1つの値(多値はない)を返す

early return多用したjsコードをelmで書き直すコツ

  • returnがないElmでどうやって書き直す?
  • 関数の中でreturnを1回だけ使うように書き直す
    • ternariesをうまく使う
    • これでうまくいかない場合もあるだろうけど、

「Elmでは演算子も関数」ということがわかる事例

  • 演算子のサンプルでみかける "hello" ++ "elm"とか
    • これは、関数の中置記法(infix style)をつかってるだけ
    • 関数なので前置記法(prefix style)が当然できる
      • prefix styleで書くときは、カッコ( )で演算子を囲む必要がある

Screen Shot 2016-12-02 at 5.07.56 PM.png
この図がよかった

演算子++ と==の優先順位

図がよい

Screen Shot 2016-12-02 at 5.08.11 PM.png

constants

  • 小文字始まり(しないとエラーになる)
  • 界隈の作法(エラーにはならない)
    • sequenceであること
      • スネークケース使わなず、キャメルケースつかうべし

REPLのtips

  • 改行したいとき
    • replでの改行はバックスラッシュとインデントをつかえばok
    • ただし、REPLのインデントでは、spaceだけ

let式でスコープ

  • let、インデント、in

無名関数

  • バックスラッシュ始まり\

コレクション

  • List, Record, タプル
  • Listは linked list
  • List vs Array
    • パフォーマンス上の理由でArrayよりもListがつかわれる
    • ch.10でくわしくと書かれて説明なかった
  • Record
    • フィールドへのアクセスはドットのみ
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up