タグ

関数型言語に関するl-_-llのブックマーク (25)

  • 内包表記について、すごい合同勉強会で話した | そんなこと覚えてない

    すごい合同勉強会2014 in 広島でセッションしたので内容を公開しておく。 今回は「私がモナドの内包表記という名前を知った時の感覚を伝えよう」というのが目的でした。 さりげなく「私がモナドに感じている効能を伝える」というのもしているのですが、そこは当にさりげなく。 内包表記。その意味を知らずに5年前ぐらいにpythonで利用していて、forやif文字通りにうけとっており、その動作を正しく理解できてないときがありました。 現在とその間にHaskellを学び、その5年前の自分に内包表記を伝えるにはという観点で話を進めました。 まず、リストの内包表記ですが、リストを生成を簡単にしてくれる機能です。 内包表記は、どうやら数学の集合の記法である内包的記法に由来するそうで、「関数プログラミング入門 ―Haskellで学ぶ原理と技法―」か何かで読んだ記憶があります。 その対になる記法として外延的記法

  • 【Scala】flatMap は怖くない! | DevelopersIO

    ここで注意が必要なのは「型引数をとる全てのクラス(全ての総称型) ≠ 文脈付きの値」ということです。型引数をとり、文脈付きの値とはいえないクラスも存在します。 たとえば SeqFactory[A] は、 Seq のサブクラス A を生成するファクトリであり、 文脈付きの値ではありません。もっと身近な例を上げると、わたし達が普段よく目にしている(であろう) Provider[A] や Publisher[A] というインターフェイスも、それぞれ「Aを提供するもの」「Aを発行するもの」という意味であり、Aという値を修飾しているわけではないので文脈付きの値とは呼びません。 文脈付きの値を返す関数 親友検索を考える さて、文脈付きの値がどのようなものかわかってきたところで、実際に文脈付きの値を生成する関数を作ってみましょう。 …などと大げさに言ってみましたが、そんなもの、今までだってたくさん作って

    【Scala】flatMap は怖くない! | DevelopersIO
    l-_-ll
    l-_-ll 2019/12/15
    文脈付きの値は、「整数があるかもしれないし、ないかもしれない」のような説明をすることができる値です
  • 今、F# で関数型プログラミングをはじめるなら - 技術memo

    F#をはじめてみたい人向け、2015年初頭現在の言語関連情報への参照をまとめてみます。 おおむね日語です。 オンラインドキュメント F# 言語リファレンス 困ったときのMS公式。よく参照しています。 いきなり全部読もうとするとかなりヘビーなので、他の記事や書籍と合わせて徐々に読むのもいいと思います。 F# コア ライブラリ リファレンス Microsoft.FSharp.Collections名前空間以下、Array/List/Seqあたりはよく使う割にすぐ忘れるので、特に参照します。 入門系Webサイト・記事 F#で初めての関数型プログラミング - @IT bleisさんによる2012年の記事です。 F#の特徴を掴むにはちょうどよく、分量もさほど多くないので、ひとまず一通り眺めておくと良いと思います。 F#入門 よくまとまっている入門サイトです。 多少情報が古いところもありますが、現在

    今、F# で関数型プログラミングをはじめるなら - 技術memo
  • http://blog.ezyang.com/2010/10/ocaml-for-haskellers/

  • Haskell for OCaml programmers

    Note The latest version of this document can be found online at https://dr-knz.net/haskell-for-ocaml-programmers.html. Alternate formats: Source, PDF. Prologue Why write a new post when a clever reader could simply “read Edward’s post backwards”? It’s about the different audience, really. My experience is that programmers well-versed in Haskell, or who learn Haskell as first language, tend to have

    Haskell for OCaml programmers
  • 関数型プログラマのためのRust | POSTD

    この投稿はEdward Z. Yangが2010年に書いた OCaml for Haskellers 、私自身が今年頭に書いた Haskell for OCaml programmers の流れに沿っています。 目次 プロローグ なぜRustを学ぶべきか 直接対応が可能なもの トレイト:Rustの型クラス アドホックなオブジェクトとメソッド 安全な参照 寿命と記憶域、そして管理オブジェクト オブジェクトの共有:RcとArc マクロとメタプログラミング リテラル 謝辞 参照 Copyright and licensing 注 : この記事の最新版は下記サイトで見られます。 http://science.raphael.poss.name/rust-for-functional-programmers.html 他のフォーマット: Source , PDF プロローグ C言語プログラマのための

    関数型プログラマのためのRust | POSTD
  • Rustは何が新しいのか(基本的な言語機能の紹介) - いもす研

    Rust は、Firefox を開発する Mozilla が開発し、次世代ブラウザの開発に使っているプログラミング言語です。借用検査という概念を導入することによりメモリ安全およびデータ競合安全をコンパイラが保証する言語であり、2015年中頃の安定版のリリースあたりから次第に注目を集めるようになりました。 メモリ安全とは、メモリの範囲外アクセスや二重解放、ヌル参照、未初期化領域へのアクセスがない状態を表します。ただし、Rust の言うメモリ安全とは、メモリリークをしないことを保証するものではありません。 データ競合安全とは、あるひとつのオブジェクトに対しての読み込みおよび書き込みのが同時に起き結果が不定になる状態にならないことを表します。競合状態とは異なります。 無名関数という概念を様々な言語が次々と導入したように、プログラミング言語は相互に影響を及ぼし徐々に変化しています。Rust は「寿

    l-_-ll
    l-_-ll 2017/01/27
    MSからVisual Rustが出たら始めたい
  • 「関数型プログラミングって何?」日本語訳 - Okapies' Archive

    この記事は、技術翻訳 Advent Calendar 2016 の15日目です(枠が空いてたので勝手にお邪魔してます)。前回(6日目)は、id:msyksphinz さんの「個人が趣味技術書を翻訳するという意義について」でした。 今回ご紹介するのは、昨年末に公開された Kris Jenkins さん (@krisajenkins) の "What Is Functional Programming?" です。日語訳の公開については著者から承諾済みです。また、London Functional Programmers meetup での同タイトルの講演動画が公開されています。 関数型プログラミングの考え方は、世間ではどうも小難しい話だと思われている節があります。その理由の一つに、議論の抽象度が(比較的)高いことが挙げられるでしょう。例えば、以前このブログで紹介した「なぜ関数プログラミング

    「関数型プログラミングって何?」日本語訳 - Okapies' Archive
  • はじめての圏論 その第1歩:しりとりの圏 - 檜山正幸のキマイラ飼育記

    全体目次: 第1歩:しりとりの圏 (このエントリー) 第2歩:行列の圏 第3歩:極端な圏達 第4歩:部分圏 第5歩:変換キューの圏 第6歩:有限変換キューと半圏 第7歩:アミダの圏 第8歩:順序集合の埋め込み表現 第9歩:基に戻って、圏論感覚を養うハナシとか 付録/番外など: 中間付録A:絵を描いてみた 番外:同期/非同期の結合 中間付録B:アミダとブレイド 番外:米田の補題に向けてのオシャベリ 一部のプログラミング言語の背景として、圏論(カテゴリー論)が使われたりするせいか、以前に比べれば多少は圏論に興味を持つ人が増えたような気がしなくもないような。でも、安直な入門的文書はあまり見かけないですね。もちろん、シッカリした教科書や論説はあるんですが、どうもシッカリし過ぎているような。例えば、圏の例として「コンパクト・ハウスドルフ空間と連続写像の圏」とか言われてもねぇ(この例はいい例なんです

    はじめての圏論 その第1歩:しりとりの圏 - 檜山正幸のキマイラ飼育記
  • [coursera]Scala作者直伝の講座!Functional Programming Principles in Scalaを受けた

  • F#で初めての関数型プログラミング(2/3) - @IT

    ■関数型プログラミングの基礎 関数型言語でどのようにプログラムを書いていくのかを見ていこう。 ●不変な値 関数型言語では極力、「状態」というものを避ける傾向にある。例えば変数が状態を持ってしまうと、その変数を参照する箇所で「この変数の今の値は何だろう?」と注意しなければ、簡単にバグを埋め込んでしまう。だが、「状態を持たずに、どうやってプログラムを書くんだ!」と思う人も多いだろう。 状態を持たないプログラムに対する抵抗感を減らすために、.NETの文字列について考えてみよう。 .NETでは、Stringクラス(System名前空間)はインスタンスを作るときに値は確定しており、以後、そのインスタンスの値を変更することはできない(※なお、Stringインスタンスに対して文字列結合などの操作をした場合は、新しい別のStringインスタンスが返されている)。つまり、Stringクラスは状態を持っていな

  • Haskell使いの高頻度取引の会社にお邪魔した

    先日、日経コンピュータ特集記事の取材で東京都内の某所にある「Tsuru Capital」という、高頻度取引(HFT、High-Frequency Trading)を手掛ける企業のオフィスにお邪魔した。 HFTというのは、プログラムによって株式などの金融商品を数ms(ミリ秒)から数μs(マイクロ秒)で高速に自動取引すること。自己資金で取引する「プロップファーム(proprietary trading firm)」と呼ばれる企業が中心で、米GETCO(2013年7月に米Knight Capitalと合併)などが有名だ。 HFTを行うプロップファームの多くは、米国など海外に拠点を置いており、Tsuru Capitalのように日国内に拠点を置く企業は珍しい。株式売買では、海外企業であっても国内の証券会社と契約し、自社の取引プログラムをその証券会社のサーバーに配置すれば日市場でのHFTは行える。

    Haskell使いの高頻度取引の会社にお邪魔した
  • F#言語の基礎文法(1/2) - @IT

    前回は、F#の概要や、関数型プログラミングの基礎、F#でよく使われるデータ構造のリストとタプルを説明した。今回後編では、F#でプログラムを書くに当たって必要最低限の文法を紹介していく。 ■主要な文法 ●if式 F#で条件による分岐を行うためには、if式を使用する。

  • F#で初めての関数型プログラミング(1/3) - @IT

    ■F#とは F#は、マイクロソフト社製のプログラミング言語で、Visual Studio 2010から標準搭載されている。まずは、F#がどのような言語なのかを見てみよう。 ●マルチパラダイム言語「F#」 F#は複数のパラダイムをサポートするマルチパラダイム言語だ。F#がサポートするパラダイムには、 手続き型 関数型 オブジェクト指向プログラミング などがある。 マルチパラダイム言語であるため、C#やVB(Visual Basic)といった従来の.NET言語を置き換える形でF#を使うこともできる。しかし、記事ではF#のメインとなるパラダイムである「関数型」にフォーカスを当てて紹介していく。 ●関数型言語「F#」 F#は、静的型付けの関数型言語である「OCaml」に強い影響を受けている。そのため、F#の主となるパラダイムは関数型プログラミングになる。 さて、関数型言語とは何だろうか? この問

  • 経験15年のOCaml ユーザーが Haskell を仕事で半年使ってみた - camlspotter’s blog

    今の会社に移って半年経ちました。めでたく試用期間終了です。といっても別に試用期間中に密かに首を切られるような事をしたとか、逆に試用期間が終わったからと言ってこれで定年までのうのうと働ける、という訳ではありません。未来は全く判りません。まあとにかく、一つ区切りがやってきました。 金融を知らないQuantsの仕事 私の職業の肩書きには Quantitatitatitatitative という単語がくっついて超カッコよさそう。普通は Quant というと、金融工学や統計数理に詳しい夜もブイブイいわしている超イケメン20代を想像しますが、私は金融とか全然知らないアラフォーお父さんです。それでも Quant です。お願いですから、私に何を買ったらいいかとか、聞かないでください。金融商品とか買った事ないし。というか、逆に教えて欲しいです。 私のチームは、当の Quant さん達が開発した、金融派生商

    経験15年のOCaml ユーザーが Haskell を仕事で半年使ってみた - camlspotter’s blog
  • F# Deep Dives

    F# Deep Dives presents a collection of real-world F# techniques, each written by expert practitioners. Each chapter presents a new use case where you'll read how the author used F# to solve a complex problem more effectively than would have been possible using a traditional approach. You'll not only see how a specific solution works in a specific domain, you'll also learn how F# developers approac

    F# Deep Dives
  • 佐藤先生がErlang、Scala、Javaなどの並行処理を斬る! - スティルハウスの書庫の書庫

    ここ数日の佐藤先生のエントリが熱い! Erlang、ScalaGoJavaなどの現代の言語(Erlangは古いか)における並行処理の扱い方について、それぞれの歴史的背景や意義、得手不得手などがわかりやすく紹介されてます。80年代から並行処理やオブジェクト指向を研究されてきた佐藤先生ならではの視点ですね。ちょっと長くなりますが特に私が興味深かった部分を引用します(強調は私): 佐藤一郎: Web日記 (2010年) 最近、興味深いのはオブジェクト指向言語のScalaやErlangが話題を集めていることでしょうか。どちらもActor Modelをベースにしているそうですが、オブジェクト指向言語の歴史でいうと、Actor Modelなどの並行処理用オブジェクト指向言語の研究が盛んになったのは1985年からの6,7年ぐらいだと思います(Actor Model自身はもっと古いですが)。そして19

    佐藤先生がErlang、Scala、Javaなどの並行処理を斬る! - スティルハウスの書庫の書庫
  • https://ubiteku.oinker.me/2016/01/13/elixir%E8%A9%A6%E9%A3%B2%E9%8C%B2-3-%E3%83%9E%E3%83%AB%E3%83%81%E3%82%B3%E3%82%A2%E5%8D%B1%E6%A9%9F%E3%81%AB%E3%82%88%E3%82%8B%E3%83%91%E3%83%A9%E3%83%80%E3%82%A4%E3%83%A0%E3%82%B7%E3%83%95/

    https://ubiteku.oinker.me/2016/01/13/elixir%E8%A9%A6%E9%A3%B2%E9%8C%B2-3-%E3%83%9E%E3%83%AB%E3%83%81%E3%82%B3%E3%82%A2%E5%8D%B1%E6%A9%9F%E3%81%AB%E3%82%88%E3%82%8B%E3%83%91%E3%83%A9%E3%83%80%E3%82%A4%E3%83%A0%E3%82%B7%E3%83%95/
  • アルゴリズムの「計算量理論」の講義ノートPDF。複雑性クラスP/NPの分類や「計算可能性」の理論を,独学で学ぶ教科書 - 主に言語とシステム開発に関して

    講義ノートの目次へ アルゴリズムの計算量理論の講義ノートPDF。 チューリングマシンやオートマトン,ラムダ計算などを使って,アルゴリズムの複雑さを判定する。 例えば,処理の複雑さを「P」と「NP」のクラスに分類したり(=計算複雑性), ある処理が決して終わらないので実行不可能だと判定したり(=計算可能性)。 独学に使える資料を集めた。 ※計算量理論とあわせて学習するとよいのは,ラムダ計算(ノート)や,グラフ理論・組み合わせ最適化(ノート)など。 ラムダ計算がわかれば「計算」を抽象化して扱える。組み合わせ最適化は,計算困難な問題の具体例を学べる。 計算量理論(計算複雑性・計算可能性)の講義ノート 計算量理論の,クラスPとNPからの入門を学べるノート: 計算量の理論 http://www.jaist.ac.jp/~uehara/course... 北陸先端大の講義スライド。 (1)計算の基

    アルゴリズムの「計算量理論」の講義ノートPDF。複雑性クラスP/NPの分類や「計算可能性」の理論を,独学で学ぶ教科書 - 主に言語とシステム開発に関して
  • 「関数型言語」に関するFAQ形式の一般的説明 - Qiita

    前置き: 特定の言語ではなく、関数型言語一般に関する説明です。 ここに書くのが良いのかわかりませんが、それを考える時間ももったいないのでとりあえず書きます。必要が生じたら移転します。 皆様のご要望や自分の気分(?)により随時加筆修正します。 「それは違うんじゃない?」というご指摘はもちろん、初心者の方の素朴な疑問・質問や、「ここがよくわからない」「こういうことも書いてほしい」みたいなコメントも歓迎します。すぐに対応できない場合もあると思いますがすみません。Twitterのesumii宛でも構いませんが、コメントのほうが他の方も見つけやすくて良いと思います。当然ながら(他者に対しても)誹謗中傷等はご遠慮ください。 いただいたコメントはほぼ文に反映していますので、文を読むために、必ずしもコメントを読む必要はありません。もちろん、興味と余裕(?)があればコメントも読んでいただければ非常に有用

    「関数型言語」に関するFAQ形式の一般的説明 - Qiita