読み時間の目安:10分以内 JavaScriptで強固なコードを書くのは大変なことです。なぜならJavaScriptには、整合性のある強力な型システムなど、昨今のプログラマが期待するような多くのツールがないからです。 そんなわけで、私たちはJavaScriptにコンパイルするための、いくつもの新しい方法を研究しています。この記事では、 Elm に注目したいと思います。この言語の雰囲気をつかむために、簡単なゲームを実装してみました。 デモで遊んでみてください(デスクトップのみです) 。 しかし、なぜJavaScriptは難しいのでしょうか? 次のようなケースを考えてみましょう。 有名なWatの動画 では、Rubyについて簡単に触れた後に、より多くの例を挙げています。 もちろん問題点に気付いた人々は、これを解決するためにJavaScriptにトランスコンパイルする新しい言語の開発を始めました。
「リアクティブプログラミングの技術を用いてマウスストーカーを実装する - はこべブログ ♨」という記事があり、興味深いのでElmのリアクティブプログラミングで似たようなことをやってみました。 全画面表示はこちらから。 コードは以下で、プロジェクト全体はこちらにあります。 import Text import Window import Time import Mouse import List import Signal import Graphics.Element(..) import Graphics.Collage(..) import Color(..) import Signal(Signal,(<~),(~)) import AnimationFrame -- マウスの座標をCollageの座標に変換するいつもの関数 mousePos : Int -> Int -> Int
本記事では、ElmのコアライブラリにおけるJSONデコードパッケージJson.Decodeを用いて、9個以上のフィールドをもつオブジェクトのデコード方法について説明する。 2015 08 31追記あり(andMapを使用する) その前に その前にJson.Decodeを簡単に説明する。 Json.Decodeは、JSONのデコード処理をするためのコアライブラリの一つである。Elm 0.14以前のものとは完全に置き換られている*1。 Jsonデコード処理の概要 一般形式としては、 decodeString : Decoder a -> String -> Result String a decodeString <デコーダ> <JSON文字列> = ... である。decodeStringは、第二引数<JSON文字列>をJSON文字列としてパースし、<デコーダ>で指定した型のデコード結果を返
I was watching this video (see image below) and it made me wonder whether Elm's Signal is the same as Conal's Behaviour. I think they are the same but I am not 100% sure. Are they the same? Here are a few related questions: 1) What is a Elm's Signal (Conal's Behaviour) in RX ? Is there such a concept in RX at all? Perhaps ReplaySubject? 2) How can I turn an RX Observable into a Signal (Behaviour)
がまだ私には難しすぎる気がするよ…… Elm - functional web programming (http://elm-lang.org/) ElmというFRPやろう (http://qiita.com/jooex/items/89ab4bf7c953a6f40069) elmはHaskellに似た構文を持つ関数型言語のAltJS。コンパイルするとJavaScriptが生成されるのでブラウザ上で動くゲームも作れる。なのでごく簡単なミニゲームをelmで作ってみた。 Sine Jump (http://abagames.sakura.ne.jp/elm/sj/) ゲームライブラリ相当の部分を除くと250行強というところなので、コードの分量的にはCoffeeScriptで書くのと似たようなものかちょい長めというところかなあ。でもコードを書く際には関数型言語ならではのかなり違う発想が求めら
これはElm Advent Calendar 2014の14日目の記事です。 AngularJSのチュートリアルをElmで再実装してみました! doloopwhile/elm-phonecat · GitHub まだ、本体のソースコードだけで、解説は何もないのですが・・・。 書いていて、気づいた事を、良い点・不満点それぞれ3つずつ書いていきます。 良い点1:必要な機能が十分に実装されている Elm v0.14ではJson.Decoderが追加され、JSONのパースを実用的な記述量で実装できるようになりました。 私にとってはこれがAngularJSのチュートリアルをElmで再実装する上での「最後のピース」でした。 もちろん「ウチの業務アプリをElmで再実装してよ」と言われると「いやAngularJSの方が・・・」となります。まだElmには荒削りなところもあります。 しかし、「オモチャ」と言わ
この記事は「Elm Advent Calendar 2014」の23日目として書きました。 今回は、作成したElmのライブラリをElmコミュニティライブラリに公開してみます。公開するブツは以前こっそりと作成してすでに登録していた「IntRange」というもので、たいしたものじゃございません*1。今回Elm 0.14に対応させた上で、elm-packageコマンドの登録手順を整理してみます。 プロジェクトを作る 何はともあれ、公開したいプロジェクトを作ります。 ディレクトリを作ってそこにcdしてelm-packageを実行。 $ mkdir IntRange $ cd IntRange $ elm-package install Some new packages are needed. Here is the upgrade plan. Install: elm-lang/core 1.0
表示 こんな感じでHtmlモジュールに定義されている、divやらのhtml要素の第一引数にAttributesを、第二引数に子ノードを与える形でDOMを構築していきます。 この例では100x100のdiv(elmのElementの制約により、サイズ指定が必要。Window.dimensionsを使用して常に全画面にして使用出来るのでそれ程気にならない)の中にテキストノード"Hello!"を持つdivが構築されます。 例では静的なページですが、勿論Signalやclickなどのイベントを使用して動的なページを作ることも出来ます。 TheSeamau5/GraphicsEngine WebGLを使用して3Dグラフィックスを扱うためのハイレベルライブラリです。 johnpmayer/elm-linear-algebraも一緒に使うように設計されているので一緒にインストールするべきでしょう(elm
grunt-elm Compile Elm files to JavaScript. Getting Started This plugin requires Grunt ~0.4.0 If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
Functional Reactive Programming (FRP) is becoming an increasingly common way to structure event- driven code, but the term "FRP" actually refers to a large body of increasingly diverse work. This talk will quickly cover the basics of FRP, and then go into a couple different formulations of FRP that people are beginning to use. We will explore how these formulations fit together historically and th
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く