Using functionalprogramming language changes the way you write code in a number of ways. Many of the changes are at a small-scale. For example, you learn how to express computations in a shorter, more declarative way using higher-order functions. However, there are also many changes at a large-scale. The most notable one is that, when designing a program, you start thinking about the (data) types
How do you imagine abuilding? You consciouslycreate each aspect, puzzling overit in stages. Inception 型なし言語に馴染みはあるものの型付言語をいざ使ってみたらどういう気持ちで書いたらいいのかわからなかったと同僚から相談があり, それをきっかけにして社内の勉強会で以下の話をしました. よく型なし vs. 型付の文脈では「型を書くのは面倒だ」「安全の方が大事だ」「でも面倒だ」「それは型推論を前提にしていないからだ」などの議論になりがちな気がしますが、これはあくまで「計算ありきの型」を考えているからで, 「型ありきの計算」だと全く見え方が違います. 「型はある種の仕様」とおもえば, 型ファーストであることと, 型なし言語でテスト駆動開発(TDD)するときに最初にテストを書くこととは, 同じ

代数的データ型(だいすうてきデータがた、英: algebraic data type)とはプログラミング、特に関数型プログラミングや型システムにおいて使われるデータ型である。それぞれの代数的データ型の値には、1個以上のコンストラクタがあり、各コンストラクタには0個以上の引数がある。 代数的データ型の値(データ)の感覚的な説明としては、引数で与えられた他のデータ型の値を、コンストラクタで包んだようなもの、である。コンストラクタに引数がある代数データ型は複合型(他のデータ型を組み合わせて形成する型)である。
関数型言語とオブジェクト指向は相容れない,という説をよく聞く。たしかに「オブジェクトは状態を持つ」「関数型プログラミングでは,できるだけ破壊的代入を行わない」とすれば,二つの概念は矛盾しているようにも思われる。また,技術的観点以外にも,「とかくシンプルさを好む多くの関数型言語プログラマが,何かと物事を複雑にする(と思われている)オブジェクト指向を嫌っている」という面があるかもしれない。 しかし,個人の好き嫌いはさておき,実際問題として,関数型言語とオブジェクト指向は大いに関係がある。むしろ,基礎理論については,ほとんど同じコミュニティの人たちが取り組んでいる,と言ってもいい。例えば,以下のような研究が,1980年代から現在に至るまで行われている。 関数型言語のモデルであるλ計算という体系において,オブジェクトを表現する研究(参考リンクなど) λ計算にならい,(プロトタイプベースの)オブジェ

JavaScriptで使うTransducers 前置きなしで乱暴に話を始めます。JavaScriptでTransducersというとまず、本家(?)っぽいCognitectのtransducers-jsというのもあるのですが https://github.com/cognitect-labs/transducers-js 今回はJavaScriptのイミュータブル界でじわじわと勢力を伸ばしているという噂のある、mori を使ってみたいと思います。 https://github.com/swannodette/mori とりあえず試してみた本家のREADMEにあるコードを、個人的に好みにしたがって修正して実行してみました。 const _ = require('lodash'); const m = require('mori'); const arr = _.range(100000

We support business-critical transformation within the world’s leading financial markets participants, enabling them to meaningfully differentiate themselves and successfully navigate a shifting landscape. Digital disruptionBlockchain andCryptoProduct innovationSimplificationBig dataCloudRegulationDigital disruptionThe digitalization of financial markets is transforming service distribution and d
Marcelo Cantos gave a prettygood explanation, but I thinkit can be made slightly more precise. A type of thing is composable when several instances can be combined in a certain way to produce the same type of thing. Control structure composability. Languages like C make a distinction between expressions, which can be composed using operators to produce new expressions, and statements, which can
はじめに こんにちは、Python界の情弱です。ちょっと前にOCaml系のエントリを色々と眺めていたらYaron Minsky氏のエントリを見つけたので翻訳してみました。 OCaml for the Masses - ACM Queue Yaron Minsky氏はJane Streetで第一線で活躍されるエンジニアで、Jane Streetの技術ページをはじめ多くの場所でOCamlに関しての知見を語ってくださっています。 Jane StreetTechBlogs本エントリはJohn Hughesの名エントリ「なぜ関数プログラミングは重要か」を受けてACM Queueに寄稿されたものの日本語訳です。 なぜ関数プログラミングは重要か Why the next language you learn should be functional YARON MINSKY, JANE STREE
1リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く