タグ

FPに関するjsstudyのブックマーク (133)

  • ラムダ計算基礎文法最速マスター - 貳佰伍拾陸夜日記

    ラムダ計算は, 多くのプログラミング言語, とくに関数型言語の原形になっています. ラムダ計算について理解しておくことは, 多くのプログラミング言語の習得に役立つでしょう. ラムダ計算はチューリング完全で, 計算能力としてはふつうのプログラミング言語と同じです. ラムダ計算で計算を書く訓練をしておくことは, 任意の計算を関数のみを使って(他の制御構文を用いずに)書くときに役立ちます. ふつうに書いたら煩雑な処理を, 関数型言語のやり方で書くとすっきりすることが多々あり, コードを自由自在に書くためには必須の考え方と言えるでしょう. 項 ラムダ計算の式を項(term)と言います. 項は変数, 抽象, 適用のいずれかです. 変数 変数(variable)はふつう1文字で書きます. 変数には関数内の束縛変数(bound variable)か自由変数(free variable)かという区別があり

    ラムダ計算基礎文法最速マスター - 貳佰伍拾陸夜日記
    jsstudy
    jsstudy 2019/08/03
    ラムダ計算の式を項(term)と言います. 項は変数, 抽象, 適用のいずれかです. 関数を作る構文を抽象(abstraction)と言います.  ラムダ計算の式を実行することを簡約(reduction)と言います.
  • 『プログラミングHaskell 第2版』の発売を開始しました

    ご来店ありがとうございます。 ラムダノートでは、Grahum Hutton氏によるプログラミング言語Haskellの定番教科書、 "Programming in Haskell" の改訂にあたる『プログラミングHaskell 第2版』(山和彦訳)の発売を当直販サイトにて開始いたしました。 『プログラミングHaskell 第2版』(紙書籍+電子書籍)(税別3200円) 『プログラミングHaskell 第2版』(電子書籍のみ)(税別3000円) 「紙書籍+電子書籍」版のお求めでも、「電子書籍のみ」版のお求めでも、いますぐPDFのダウンロードが可能です。紙書籍については、8月22日(木)以降の発送開始を予定しています。書店(オンライン書店を含む)での紙書籍の発売も8月22日以降を予定しております。 なお、直販サイトでのお求めにあたってユーザ登録などは不要です(ただ、ユーザ登録をしていただくと、

    『プログラミングHaskell 第2版』の発売を開始しました
    jsstudy
    jsstudy 2019/08/03
    原書第2版は、この10年に起きたHaskellの大きな変化を意欲的に取り込んでいます。「豊富な例題をとおして関数プログラミングの考え方を学べる」、旧版を上回る量の楽しくて深い内容の例題が満載の一冊になっています。
  • Haskell 解説本 小史 - golden-luckyの日記

    語圏におけるHaskellの解説には、これまで4回の波がありました。 それを思い出しながら、最後に『プログラミングHaskell 第2版』の紹介をします。 第1波 第2波 第3波 第4波 『プログラミングHaskell』が改訂されます 第2版ではプログラミングにおける型の理解が深まると思う ここで買えます 第1波 Haskell解説の1つめの波は、2006年、『入門Haskell』と『ふつうのHaskell』が出版された頃にありました。 このうち、『入門Haskell』は(おそらく)日初のHaskellです。 『入門Haskell』(2006年) 『ふつうのHaskell』(2006年) 『ふつうのHaskell』は、書名だけを見ると「特殊な言語」であるHaskellを「ふつう」に説明しているであるように思えるのですが、実はそうでもなくて、淡々と部品の説明をしていく感じの内容

    Haskell 解説本 小史 - golden-luckyの日記
    jsstudy
    jsstudy 2019/08/03
    『プログラミングHaskell 第2版』 第2版ではプログラミングにおける型の理解が深まると思う ・データとしての型 ・定義が同じような形をしている関数を、同じ仲間だと思って扱うための道具としての型(型クラス)
  • OCamlで48 Hour Schemeをやってみる その5 (第九、十章) - Arantium Maestum

    Write Yourself a Scheme in 48 Hoursの最後の二章をやっていく。入出力と標準ライブラリ作成。 第九章:入出力 stdin, stdoutやファイルに対する入出力を実装する。 github.com 例によって「Haskellだとモナドが出現していろいろ型を頑張らないといけないけどOCamlだから・・・」という案件。 HaskellではIOモナド型のために新しいIOFunc式を用意したりしているが、OCamlだと普通に今まで通りPrimitiveFuncに放り込んでいける。 type expt = (* 省略 *) | PortIn of in_channel | PortOut of out_channel と入出力用のchannelをラップしたPortIn/PortOut式は用意する。あとはIoモジュールでそれを使う関数を定義し、primitives.mlで

    OCamlで48 Hour Schemeをやってみる その5 (第九、十章) - Arantium Maestum
    jsstudy
    jsstudy 2019/08/03
    「Haskellだとモナドが出現していろいろ型を頑張らないといけないけどOCamlだから・・・」HaskellではIOモナド型のために新しいIOFunc式を用意したりしているが、OCamlだと普通に今まで通りPrimitiveFuncに放り込んでいける。
  • Advanced programming languages

    Students often ask for a recommendation on what language they should learn next. If you're looking for a job in industry, my reply is to learn whatever is hot right now: C++, Java and C#--and probably Python, Ruby, PHP and Perl too. If, on the other hand, you're interested in enlightenment, academic research or a start-up, the criterion by which you should choose your next language is not employab

    jsstudy
    jsstudy 2019/08/03
    Standard ML and OCaml, Haskell uses an extension of Hindley-Milner-style type inference, which means that the programmer doesn't have to write down (most) types, because the compiler can infer them. It has been my experience that it is difficult to get a bug through the Hindley-Milner type system.
  • The Pyret Programming Language

    Pyret is a programming language designed to serve as an outstanding choice for programming education while exploring the confluence of scripting and functional programming. It's under active design and development, and free to use or modify. Examples Why Pyret? Set Sail News & Discussion data BinTree: | leaf | node(value, left, right) end fun tree-sum(t): doc: "Calculate the sum of node values" ca

    The Pyret Programming Language
    jsstudy
    jsstudy 2019/08/03
    Pyret is a programming language designed to serve as an outstanding choice for programming education while exploring the confluence of scripting and functional programming. It's under active design and development, and free to use or modify.
  • Interesting Programming Languages

    Interesting Programming Languages an opinionated collection of programming languages. Created: Feb 19, 2020 by Pradeep Gowda Updated: May 17, 2024 Tagged: programming-language An opinionated collection of programming languages. This is a list of what I consider interesting. Requests to add to this list are welcome, but there is no guarantee I’ll include them. As you can see many mainstream program

    jsstudy
    jsstudy 2019/08/03
    Pyret -- python like language (syntactially) with FP ideas. inbuilt testing emphasis with where: keyword. structured data like OCaml etc., Runs on top of Racket. https://www.pyret.org/
  • オブジェクト指向プログラミングは1兆ドル規模の大失敗なのか? - YAMDAS現更新履歴

    えーっと、長すぎて、ワタシも全部は読み通せていません。 文章の趣旨はインパクトが強いタイトルの通りで、オブジェクト指向プログラミングは1兆ドル規模の災厄であり、もうオブジェクト指向プログラミング(OOP)の先に進むべき時だよ、ということである。 著者は OOP 批判がセンシティブな話題であること、多くの読者を敵に回すであろうことを認めた上で、OOP はその発明者であるアラン・ケイが思い描いたように実装されればよかったと考えている。で、返す刀で現実の Java や C# の OOP へのアプローチを批判する。 OOP が素の手続き型プログラミングよりも優れているという客観的、公平なエビデンスは存在しないと著者は断言している。 ところどころで「Java は MS-DOS 以来コンピューティング分野に生まれたもっとも悲惨な存在だ」というアラン・ケイの言葉や、「C++ はおぞましい言語だ。だからプ

    オブジェクト指向プログラミングは1兆ドル規模の大失敗なのか? - YAMDAS現更新履歴
    jsstudy
    jsstudy 2019/07/28
    プログラミングパラダイムは便宜上4つに分類できる。(1)手続型(OOP含む)、(2)関数型、(3)問合型、(4)論理型。(1)が命令型、(2)(3)(4)が宣言型。全部習得すればTPOで使い分けるだけの話。プログラマーなら全部知っておくべき
  • オブジェクト指向プログラミング -- 1兆ドル規模の大失敗

    CodeIQのブログより。🤔 なぜ、OOPから移行する時なのか Ilya Suzdalnitski OOPは、多くの人にコンピューターサイエンスの重要資産と考えられています。コード構成(code organization)に対する究極のソリューション。すべての問題の終焉。私たちのプログラムを書くための唯一の当の方法。自分自身をプログラムするという真なる唯一神から私たちに授けられました… それまでは、そうではなく、抽象化の負担、そして無差別に共有されるミュータブルなオブジェクトの複雑なグラフによって、人々は屈し始めています。現実世界の問題を解決するのではなく、「抽象化」と「デザインパターン」について考えるのに貴重な時間と頭脳が費やされています。 非常に著名なソフトウェアエンジニアを含め、多くの人々がオブジェクト指向プログラミングを批判してきました。驚くことに、OOP自身の発明者でさえ、今

    オブジェクト指向プログラミング -- 1兆ドル規模の大失敗
    jsstudy
    jsstudy 2019/07/28
    副作用の扱い方はバグ防止の肝。OOPのカプセル化による副作用の隠蔽よりも、FPの参照透過性による副作用の分離の方が簡単で確実。各種GUIはMVVMでFRP、双方向データバインディングで作ればOK?OOPで出来ることはFPでも可能
  • 時系列データベース「InfluxDB」とは? - アルパカログ

    最近、InfluxDBを使う機会があったので、このエントリではInfluxDBについて簡単に紹介します。 なお、他の時系列データベースとの比較は行なっていないのでご了承ください。 InfluxDBの特徴 InfluxDBは時系列データベース(Time Series Database/TSDB)の1つで、HTTP APIを備えているという特徴があります。 時系列データベースはRDBと違って、時系列データに特化したDBです。 時系列データとは、サーバのメトリクスやユーザーの行動ログなどのように、1つ1つの情報自体よりも「情報の変遷」が意味を持つようなデータです。 InfluxDBにも時系列データベース特有の、データに保持期限を設けたり、データを間引いたり(ダウンサンプリング)する機能が備わっています。 InfluxDBのクエリはMySQLなどのRDBとよく似ています。 学習コストは低いものの、

    時系列データベース「InfluxDB」とは? - アルパカログ
    jsstudy
    jsstudy 2019/07/23
    時系列データベース(Time Series Database) RDBとは違って、例えばサーバのメトリクスやユーザーの行動ログなど、情報の1つ1つよりも、情報の変遷に意味のあるデータを保存するのに適している。サーバの監視にTSDBが用いられる
  • 時系列データベースに関する基礎知識と時系列データの符号化方式について - クックパッド開発者ブログ

    こんにちは。インフラストラクチャー部 SRE グループの吉川 ( @rrreeeyyy ) です。今期オススメのアニメはツインエンジェル BREAK です。 普段の業務並びに趣味の一環として、サーバのモニタリング環境の調査や改善に取り組んでいます。 そこで稿では、モニタリングのコンポーネントの一つとして外すことが出来ない、時系列データベースの基礎知識に関して紹介します。 そもそも時系列データ・時系列データベースとは? 時系列データというのは、特定の時間ごとに何らかの値を取得した際の、取得した一連の値を指します。 例えば、以下のようなフォーマットをしたデータなどは時系列データにあたるでしょう。 timestamp1,key,value1 timestamp2,key,value2 timestamp3,key,value3 : 時系列データベースとは、上記のような時系列データの保存・処理に

    時系列データベースに関する基礎知識と時系列データの符号化方式について - クックパッド開発者ブログ
    jsstudy
    jsstudy 2019/07/23
    時系列データというのは、特定の時間ごとに何らかの値を取得した際の、取得した一連の値を指します。timestamp1,key,value1 時系列データベースとは、時系列データの保存・処理に特化したデータベースです。→FRPに適合?
  • LISP in Two Days with Rust - Plingdollar

    LISP in Two Days with Rust 10 Jul 2019 As a sidetrack from the development of my programming language I’ve spent some time developing a LISP. The plan is to use the language as a testing ground for experimentation with transforming an AST in Rust. The syntax of LISP is simple and was developed to be easy to parse. I figured it would make a good starting point for an experimental compiler. The lang

    jsstudy
    jsstudy 2019/07/20
  • 関数型プログラミング in JavaScript - Qiita

    for文ベタ書きから関数型へリファクタリングしていく記事です。 ベタに書く 各項目を3倍するプログラムを考えてみましょう const input = [1,2,3,4,5,6,7,8,9,10] const output = [] for(const item of input) { output.push(item * 3) }

    関数型プログラミング in JavaScript - Qiita
    jsstudy
    jsstudy 2019/06/01
    (なぜブクマされてるのか不明だけど需要があるのかも?)
  • 自作OCamlコンパイラでセルフホストした - molecular coordinates

    概要 ここ最近作っていたOCaml*1コンパイラmlml*2でセルフホストを達成しました。ヤッター github.com mlmlには以下に代表されるような、OCamlの基的な機能が実装されています。 再帰関数 ヴァリアント、レコード パターンマッチ カリー化 モジュール また、多少の標準ライブラリも実装されています。 mlmlの特徴 ほぼフルスクラッチ 今回LLVMやパーサジェネレータに頼らないコンパイラづくりを体験するのが目的の一部だったので、結果的にフルスクラッチらしきこと*3になりました。OCamlの標準ライブラリ以外の外部ライブラリを使用しておらず、字句解析器・構文解析器は手書きです。 OCamlで書かれている セルフホストしたのでそれはそうなんですが、OCamlで書かれています。 また、言語処理系を書く場合ランタイムライブラリはC言語で用意してリンクする場合が多いと思いますが

    自作OCamlコンパイラでセルフホストした - molecular coordinates
    jsstudy
    jsstudy 2019/05/25
    早い!!!→"なんとなくOCamlを書けるようになろうと思ったので、公式のチュートリアルをやりました。4月の初め頃のことです。それが一通り終わったのでコンパイラを作ることにしました。開始からだいたい50日"
  • Neural Networks, Types, and Functional Programming -- colah's blog

    An Ad-Hoc Field Deep learning, despite its remarkable successes, is a young field. While models called artificial neural networks have been studied for decades, much of that work seems only tenuously connected to modern results. It’s often the case that young fields start in a very ad-hoc manner. Later, the mature field is understood very differently than it was understood by its early practitione

    jsstudy
    jsstudy 2019/05/19
    DeepLearningでEncodingRNNと呼ばれる操作は、関数型プログラミングでFoldのこと?ディープラーニングは、ニューラルネットなどという前時代的モデルではなく、関数型プログラミングですべて抽象的に数学的にプログラム可能
  • ディープラーニングと通常の機械学習の違いは何ですか?

    回答 (12件中の1件目) https://www.youtube.com/watch?v=-AoXwZSf6E0 Artificial Intelligence (人工知能) の一種が Machine Learning (機械学習) の一種が Deep Learning (ディープラーニング) という図式となります。 ただし今後は実質、AI/機械学習はディープラーニングをベースに展開していくものと思われます。 ここの他の回答にあまりにも間違ったものが多い(というより現時点で7件の回答がついていますが、そのほぼすべてに大きな問題がある)ので、回答させていただきます。 まず、何...

    ディープラーニングと通常の機械学習の違いは何ですか?
    jsstudy
    jsstudy 2019/05/19
    重要なのは1.多重(ディープ)の階層構造であり2.各層で抽出(学習)した特徴量(representation)を3.合成するということです。ディープラーニングは関数型プログラミングですべて抽象的に数学的にプログラム可能
  • 【翻訳】あなたが求めていたリアクティブプログラミング入門 - ninjinkun's diary

    original: The introduction to Reactive Programming you've been missing (by @andrestaltz) (translated by @ninjinkun, reviewed by @ma0e) あなたはリアクティブプログラミングと呼ばれる新しい方法が気になっている。 勉強するのは大変で、良い教材がないのでさらに難しい。私が勉強を始めたときは、まずチュートリアルを探した。見つけたのは一握りの実践的なガイドだけ、しかもそれらは表面をなぞっているだけで、リアクティブプログラミングのアーキテクチャ全体像を構築しようとしてはいなかった。ある関数を理解するのに、ライブラリのドキュメントは役に立たないことがある。 これを見て欲しい。 Rx.Observable.prototype.flatMapLatest(selector,

    【翻訳】あなたが求めていたリアクティブプログラミング入門 - ninjinkun's diary
    jsstudy
    jsstudy 2019/05/18
  • anypicks.jp - anypicks リソースおよび情報

    This webpage was generated by the domain owner using Sedo Domain Parking. Disclaimer: Sedo maintains no relationship with third party advertisers. Reference to any specific service or trade mark is not controlled by Sedo nor does it constitute or imply its association, endorsement or recommendation.

    anypicks.jp - anypicks リソースおよび情報
    jsstudy
    jsstudy 2019/05/08
    手続型(命令型)だけでなく、関数型(宣言型)でも書きやすい言語が学習教材として良いかも。今どきの言語ならマルチパラダイム対応で関数型でも書けます。
  • Thinking in Ramda: Getting Started

  • JavaScript で体感する関数型プログラミング | PLAID engineer blog

    Ramda.jsの関数を例にしてJavaScriptによる関数型プログラミングの考え方を紹介します

    JavaScript で体感する関数型プログラミング | PLAID engineer blog
    jsstudy
    jsstudy 2019/05/06
    Ramda.js の関数を例にして JavaScript による関数型プログラミングの考え方を紹介 Ramda.js を使うとどのように便利なのかについては、Thinking in Ramda のブログに良くまとめられています。