With best-in-class Jira integration, and built-in CI/CD, Bitbucket Cloud is the native Git tool in Atlassian’s Open DevOps solution. Join millions of developers who choose to build on Bitbucket.
※この記事はずいぶん内容がわかりづらかったようで、さまざまな反応を頂きました。追記が複数ありますので、併せてご覧ください。 TL;DR Version: リアクティブプログラミングに挑戦しようとした。がっかりした。 はじめに 私のこの記事は「【翻訳】あなたが求めていたリアクティブプログラミング入門」に触発されて?書かれたもので、そちらの元ネタの記事に先に目を通しておいたほうが理解がしやすいと思います。そちらの記事は本当に解説がわかりやすく、そして何よりとても説明が具体的なので、リアクティブプログラミングについて知りたいかたには大変おすすめです。リアクティブプログラミングの解説には、漠然としたことしか言っておらずさっぱり参考にならないものも多いのですが、いや本当に多いのですが、この元ネタの記事では図表が適切に使われているだけでなく具体的な問題提起と具体的なコードによる解決策が示されており、リ
【forが嫌い!可読性を上げたい!】楽するために学ぶ配列の高階関数(map, filter, reduce等)JavaScriptリーダブルコード高階関数 複雑すぎるforの処理に悩まされたことはありませんか? プログラミング習いたての頃、forに悩まされた記憶はありませんか? また、業務で複雑すぎるfor文を見て、これくらい理解できないとやっていけないのか…と悩んだ記憶はありませんか? 実はそのfor…もっと読みやすい書き方が出来て、簡単に読めるとしたら楽じゃないですか? いやいや、単にもっと楽したくありませんか? 今回は個人的に「苦手なfor文」の書き換え(map, filter, reduce等)について、短くなるだけじゃないところを紹介したいと思います。 コードを読む事に神経をとがらせて疲弊したくない人には、オススメしています。(頭を使う労力が減ってると信じたい...) 本記事につ
2018/4/30 追記: 古くなっていたこちらの邦訳ですが、プルリクエストを頂き最新版PureScript v0.11に対応しました。本当にありがとうございました。 Haskellライクな関数型プログラミング言語PureScriptの入門書、"PureScript By Example"を邦訳しました。本書はPureScriptのオリジナルの作者であるPhilさん本人が執筆した入門書です。本書を理解するにはJavaScriptを知っていることが望ましいですが、そうでなくともすでに何らかのプログラミング言語を知っていれば読みこなすことはできると思います。PureScriptはHaskellを始めとした多くの関数型言語と様々な考え方を共有していますから、PureScriptという言語そのものを学ぶという目的でなくとも、関数型プログラミング全般についての入門としても読むにも適しています。無料で
A strongly-typed functional programming language that compiles to JavaScript Benefits Compile to readable JavaScript and reuse existing JavaScript code easily An extensive collection of libraries for development of web applications, web servers, apps and more Excellent tooling and editor support with instant rebuilds An active community with many learning resources Build real-world applications us
みんな大好きHaskell風altJS!みんな違ってみんな良いのですが、やはり気になるのは生成するjsの速度やサイズですね! 今回は竹内関数を使用してベンチマークを行ないました! エントリー javascript haste-0.4.3 fay-0.22.0.0 purescript-0.6.2 Elm-0.14 ghcjs-dev idris-0.9.15.1 ベンチマーク条件 ベンチマークには正格評価の竹内関数(Tarai)を使用した コードは以下のHaskell実装をベタ移植した1 2 コンパイルされたコードをuglifyjsにより圧縮した javascriptの実行にはnode-0.10.35を使用した ベンチマークは10回実行し、process.hrtime関数で計測した 実行環境はMac book air Mid 2011(メモリ4GB, CPU 1.8GHz Core i7)
(※アイキャッチ画像は、この記事に関係あるようで関係ないウサギ対ウナギ画像です) アドベントカレンダー『Elm2』の昨日の記事は、ababさんの『Elmで副作用を扱う仕組みCmdがとっても良い理由』でした。副作用のある部分とない部分を分離する「純粋」な言語は、作用を扱うのが面倒くさい言語だと思われがちですが、実は作用を扱うのがとても上手なんですよね。ElmのCmdは、Haskellみたいにモナモナせずにシンプルに作用を扱う方法としてElmがたどり着いた、ひとつの解答であります。 さて、Elm と PureScript は、どちらも AltJS にして Haskell の直系の子孫であり、そしてどちらも正格評価でありレコード型のような機能を取り込んでいるなど、共通点の多い言語たちでもあります。このどちらを選べばいいのか、迷っている人もいるのではないでしょうか。そんな方のために、それぞれの特徴
"PureScript is more like Haskell than Haskell itself." – `@thebeardedzug — Rahul Goma Phulore (@missingfaktor) 2017年3月24日 はじめに スクリプト言語PureScriptの開発環境構築から簡単なアプリケーションの作成までの手順を紹介します。この記事では、基本的なコマンドライン環境のアプリケーションだけでなく、Halogenというユーザインターフェイスのフレームワークや、簡単なサーバサイドアプリケーションを動かすところまでを紹介しています。そのため、シングルページアプリケーションのような実用性の高いアプリケーションを作って試せるようになっています。ブラウザ環境で動けば、ウェブページに組み込んで自分が作ったアプリケーションを簡単に他の人に見せられますし、Electronを使って
多くのプログラミング言語が用途を限定しない汎用の言語として設計されているのに対して、領域特化言語(ドメイン固有言語, domain-specific language, DSL)は何らかの目的に特化して設計された言語のことをいいます。領域特化言語を導入する利点のひとつは、プログラムの各部分の役割が明確になり、ソフトウェア全体の設計がよりわかりやすくなるというものがあります。たとえば、ゲームソフトウェアではゲームの描画とゲームの状態更新は完全に分離されているべきです。ゲームで一時的に処理が重くなり、描画を何フレームかスキップして速度を維持したいとしましょう。もし状態更新と描画がきちんと分離されていなければ、描画だけをうまくスキップするということはできなくなってしまいます。もし描画専用の領域特化言語を導入すると、ソフトウェアのコードをその内容に沿って完全に分離するのを強制し、それに違反するよう
require('fs').readFile(sourceFile, function (error, data) { if (!error) { require('fs').writeFile(destFile, data, function (error) { if (!error) { console.log("File copied"); } }); } }); Libraries such as React and virtual-dom model views as pure functions of application state. Functions enable a simple form of abstraction which can yield great productivity gains. However, functional programming i
PromiseやGeneratorのような機構を使ってもなお非同期処理は厄介だ、そしてもっとシンプルで便利な方法があるよ、という話です。前半の議論を元に、後半ではなぜプログラミング言語の作用をモナドで抽象すると便利なのかということの説明をしています。 関数型プログラミング言語は「副作用をなるべく減らすことで安全性を高めた言語」というように説明されることがありますが、すべての式が副作用を持たないという『純粋』関数型プログラミング言語が言語を参照透明にしてモナドを導入するのは決して「副作用はなるべく避けたほうが安全だから」という理由だけではないのです。長いですが、これでも結構削りました。 序盤戦・Promises/Generatorsの光と影 Promises/Generatorsで世界はちょっと平和になる かつてはJavaScriptの非同期処理はコールバック地獄に陥ったり様々なパターンが混
この記事はPhil Freeman, "Why You Should Use PureScript"の邦訳です。この記事の原著者のフィルさんは、PureScriptのオリジナルの作者さんでもあります。原著はCC BY-NC-SA 3.0でライセンスされており、その許諾に従って私が勝手に翻訳・公開するものです。もし翻訳された内容に誤りなどがあれば、修正しますので私までご連絡ください。また、わりとざっくりした記事なので、HaskellやPureScriptについて知識がないとわかりにくい部分もあるかもしれませんが、ご了承ください。これは私の夏休みの自由研究です。みなさんも夏休みの自由研究にPureScriptはいかがでしょうか。 なぜPureScriptを使うべきか 優れた抽象 PureScriptは『型クラス』を持ち、私たちはこれを使ってとても再利用性の高いコードを書いています。PureSc
『純粋』関数型プログラミング言語といえば関数型プログラミング言語全体のなかでも殊更ラジカルな言語として知られていますが、『すべて純粋』という言語には、『だいたい純粋』という言語にはない利点があります。このテキストは、実感を得やすい具体的な場面を元に『純粋関数型』の利点を紹介していくシリーズです。第一回は言語を純粋にしてモナドで抽象化すると、非同期処理のコールバック地獄をPromise/Generators以上にシンプルかつ優れた方法で解決できるよという話でした。今回は、言語が純粋なら仮想DOMを使うときに純粋性も何も知らなくていいし、レンダリング関数の純粋性が自動的に保証されてとにかく簡単だよ、という話です。 ケース1: 『別に純粋でない』言語~『だいたい純粋な』言語の場合 みなさん仮想DOMは使ってますでしょうか。筆者はもう新しいおもちゃを与えられたイヌのようにハフハフしながら遊んでいて
I am a developer living in Los Angeles, CA. I work principally in Scala, Haskell and TypeScript. I love using functional techniques to solve real world problems. I am the original developer of the PureScript programming language and compiler, and have written several of its core libraries. 1. Introduction 1.1 Functional JavaScript 1.2 Types and Type Inference 1.3 Polyglot Web Programming 1.4 Prere
2019年09月版. 静的型付けでnull安全なAltJSの評価と選定. 比較整理する必要があったので比較しました. 間違っている所などの指摘を受けたいので広く公開します. ちなみに私は2015年頃はDartを推していたようですね. 当時のTypeScriptはstrictNullChecksも@typesも無かったのであまり魅力的に感じなかったようです. 私の提言 結論から書きます. 個人的にはPureScriptを推したいですが, 流石に他の人にとっては学習コストが大きすぎると思ったので, 基本的に以下のような感じに選ぶと良いと思いました. 外部ライブラリの使用がメッセージ単位でまとまる程度に収まる → Elm Reactを使いたい → Reason VueやAngularなどReact以外のフレームワークをガッツリ使う, Node.jsをサーバーサイドでメインで使う, 小規模なスクリ
Halogen is a type-safe library for building user interfaces in PureScript. Declarative Write simple views for each state in your application, and Halogen will efficiently and intelligently update the right components and re-render your user interface. Component Architecture Write encapsulated components which manage their own state, and compose them together to build complex user interfaces. Or, u
PureScriptの公式ドキュメントより、『Haskellとの違い』のざっくり翻訳+αです。原文のライセンスはCreative Commons Legal Code Attribution-NonCommercial-ShareAlike 3.0 Unported です。 (翻訳ここから) 評価戦略 Haskellとは異なり、PureScriptは正格評価です。 JavaScriptの評価戦略と一致するので、既存のコードとの相互運用はとても簡単です。PureScriptモジュールからエクスポートされた関数は、「通常の」JavaScript関数とまったく同じように振る舞いますし、それに対応して、FFIを通じてのJavaScriptの呼び出しもシンプルになっています。 正格評価を維持するということは、実行時システムや非常に複雑なJavaScript出力も必要ないということを意味します。やむを
Freeは、Functorを受け取ってMonadをつくることができるモナドです。 Freeのデータ型の定義は以下です。 よくわからない再帰的な定義がされていますね。初見で読めたらすごいと思います。 この記事では、上の定義のようなFreeがどのようにMonadをつくるかを見ていきます。 次のような順で説明していきます。 PureScriptの予備知識と用語説明 ListについてFunctor / Monadを実装する Free fについて、同じようにFunctor / Monadを実装する Free fだけでなく、Freeそれ自体もモナドではあるんですが、1つ高いレイヤー(誤魔化した言い方)でのモナドなのでこの記事では触れません。 PureScriptの型システムでは表現できないですしね。 忙しい人のためのFree この記事で説明したいことをひとことで言うと、 Pureがpure、Freeが
はじめに PureScript Advent Calendar 2017 - Qiitaの1日目の記事が埋まっていなかったので大急ぎで書くことにしました。 元々はRubyやJavaScriptなどの動的言語をメインでメシを食べているプログラミング的ゆとり世代であった私が、 少なくとも一般論としては学習が大変だと評されているPureScriptを、 (上手いか下手かは別として)普通に書けるようになった要因を記憶の限り辿ってみようと思います。 つまり、この記事は、「最初からPureScriptの勉強のためにやっていた」ということではなく、「たまたまそういう道を通ったけど、 あれがよかったのかもしれない」という回想です。 道のはじまり この道のはじまりはHaskellでした。 特に仕事で使うわけでもなく、関数型言語に興味があったわけでもなく、ただなんとなく暇を持て余していたので暇つぶしとして思い
Pursuit hosts API documentation for PureScript packages. It lets you search by package, module, and function names, as well as approximate type signatures. To get started, have a look around Prim, the Prelude, or try one of these example searches: map (a -> b) -> f a -> f b Data.List Publish If you are a package author looking for information on how to publish your packages on Pursuit, see the Hel
Versions latest Downloads PDF HTML Epub On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.
TL;DR Freeモナドの合成はCoproductという型とInjectという型クラスを使うとできるよ! 詳しくはコードを見てね! https://github.com/goldarn-ring/how-to-compose-free-monad すごーい!君はDSLが得意なフレンズなんだね! 突然ですが、Freeモナドって便利ですよね! えっ、ご存知ではない? DSLを簡単に作れる便利なモナドですよ! 詳しくはこちら: Freeモナドって何なのさっ!? - capriccioso String Creating(Object something){ return My.Expression(something); } そろそろFreeモナドに関して一言いっとくか - fumievalの日記 DSLによるコードと、DSLの各命令の処理を切り離すことで、モック化とかDIとかが簡単にできるの
はじめに この記事は、Simple-JSONの作者であるJustin Wooさん(@kimagure)の記事を翻訳したものです。 twitterでこのようなことを書いてくださっていたので、たまたま反応した @oreshinya が翻訳することになりました。 JSONのような何らかのテキストデータを、プログラムで利用できるデータ型にパースすることは、私たちが使用している言語のほとんどについて行う必要があることです。いくつかの言語では、パーサーを書く方法を習得する必要がありますが、PureScriptでは、Simple-JSONを使うことにより、機械的にパースすることができます。私は、PureScript 0.11.6でRowToList機能がリリースされた時にこのライブラリを書きました。このライブラリは型シノニムを書くだけで使用できます。 プロジェクトのセットアップ このライブラリを使うプロ
Flare is a special-purpose UI library for Purescript. The idea is to define the user interface and the logic of the program at the same time. On the one hand this approach somewhat limits the number of use cases, but on the other hand this allows for a remarkable expressiveness. A first example Imagine you want to build a really simple web application that calculates the product a × b for two numb
I am a developer living in Los Angeles, CA. I work principally in Scala, Haskell and TypeScript. I love using functional techniques to solve real world problems. I am the original developer of the PureScript programming language and compiler, and have written several of its core libraries. 1. Introduction 1.1 Functional JavaScript 1.2 Types and Type Inference 1.3 Polyglot Web Programming 1.4 Prere
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く