タグ

functionalに関するsiroccoのブックマーク (21)

  • 『マンガでわかる!関数型プログラミング』という漫画を連載することになるようです - Line 1: Error: Invalid Blog('by Esehara' )

    近況 ふとした瞬間に虚しくなることがある いきさつ 今年、秀和システムから関数型プログラミングに関するが出て、良くも悪くも、そのが注目を集めることになってしまいました。そんな中で色々な人が反応していましたし、自分もこのようなかたちで感想を書きました。 一方で、このようなを書かれるくらいであるならば、自分で真っ当なを書けばいいわけだし、技術書を書くことなんて、そんな敷居の高いことではないというカウンターもあり、個人的にはそれも最もだなあ、という印象がありました。その中で自分なりに関数型プログラミングについて理解したことを元にQiitaに駄文をアップしたりしていました。間違ってたら、誰かが訂正してくれるだろうし、そのほうが自分にとって勉強になるだろう、と思うので。 ですが、「関数型プログラミング」というのは「なんだか難しい」という印象を覚えるのも事実のようです。実際に、最新の『Soft

    『マンガでわかる!関数型プログラミング』という漫画を連載することになるようです - Line 1: Error: Invalid Blog('by Esehara' )
    sirocco
    sirocco 2015/07/13
    関数とは何なのか。入口があり出口がひとつのブラックボックス。そのブラックボックスを組み合わせてプログラミングする。ループ構造がないので全て再帰で行う。
  • 次のAmazonレビューを確認してください: 関数型プログラミングに目覚めた!IQ145の女子高校生の先輩から受けた特訓5日間

    【追記:書前半に関してこのレビューよりも詳しく適切なレビューが Qiitaという技術情報サイトに掲載されています。amazonのレビューの制約でURLを記載できませんが、購入前に書の技術関係書籍としての水準を知るために "Qiita nonstarter" で検索して当該レビューを読まれることをお勧めします。なお、当該レビューとコメント欄での書に対する批判的評価に対し、同一人物と思われる複数のアカウントが著者独特の主張を擁護すべく300件弱に及ぶ極めて多数のコメントをつけています(迷惑行為としてもある種壮観ですので一見の価値はあるかもしれません)。】 書の技術的内容は実質的にその7割が「0から9までの数をすべて足すコードを書け」ということに尽きています(書の水準は関数型プログラミングの書籍であるにも拘らず再帰が扱われるのが400頁の中でフィボナッチ数列を例に出す1箇所だけだという

    sirocco
    sirocco 2015/04/29
    "状態を持った手続きは引数で状態を持ち回すようにすることによって純粋な関数にできる、という関数型プログラミングの基本的な技法"
  • 第1章 関数プログラミングは難しくない!―初めて学ぶ人にも、挫折した人にもきちんとわかる | gihyo.jp

    [入門]関数プログラミング―質の高いコードをすばやく直感的に書ける! 第1章関数プログラミングは難しくない!―初めて学ぶ人にも、挫折した人にもきちんとわかる マルチコア環境が身近になった影響からか、勉強熱心なプログラマの間で関数型言語が話題になっているようです。関数型言語が奨励する関数プログラミングでは、これまで命令型言語で習得した、命令プログラミングの再代入を使う技法があまり通用しません。そのため、「⁠関数型言語は難しい」と言って途中で投げ出してしまう人も多いようです。 この特集では、関数プログラミングの習得を一度諦めてしまった人や、これから始める人のために、関数プログラミングのポイントをできるだけわかりやすく説明します。 筆者がわかるようになるまで 実は筆者も長い間、関数プログラミングを習得できませんでした。筆者は、長年Emacs Lispを使って、Mewというメールリーダーを開発して

    第1章 関数プログラミングは難しくない!―初めて学ぶ人にも、挫折した人にもきちんとわかる | gihyo.jp
    sirocco
    sirocco 2015/03/03
    関数プログラミングを学ぶネックという変数なし、制御文なしで、どうプログラムするのかは逆に興味が湧いて学習しました。答えは全部再帰。最初はここで。「もうひとつの Scheme 入門」 http://www.shido.info/lisp/idx_scm.html
  • 関数型言語のウソとホント - Qiita

    追記 こんな記事を読むより、まともな関数型プログラミング言語を使ってまともに関数型プログラミングを学ぶほうが、関数型プログラミングについてよほど正確な理解を得られます。少しでも関数型プログラミングに興味のある人は、まずは真面目なHaskellの教科書やすごいHを読んだり、やさしいHaskell入門を読んだりしながら、実際に関数型プログラミングのコードを書いてみることをお勧めします。 繰り返しますが、この記事はあんまり読む必要はないです。関数型プログラミングを理解するには実際に自分でコードを書いてみるのが一番です。関数型プログラミングあるいは関数型プログラミング言語を理解するもっとも確実な方法は、Haskellをあなたのマシンにインストールして何かまとまったアプリケーションを書いてみることです。Haskellでアプリケーションが書けたら、自分は関数型プログラミングを理解しているし使えると胸

    関数型言語のウソとホント - Qiita
    sirocco
    sirocco 2015/01/06
    今はC#で書いているけど、次はF#で書いてみよう。
  • FPGA超並列時代に向けて!? - 関数型プログラミングを学ぶわけ - fintopo

    私の頭はループ脳、って書いた。 メソッドチェーンとループ脳 - fintopo ループってのは、順次処理の繰り返しってことなんだよね。つまりプログラマは、添字の順番に処理されることを期待している。 PASCALのfor文にはdowntoという構文がある。通常はカウントアップでfor文を回すんだけど、カウントダウンで回したい時があるんだよね。これなんかまさに順番が重要ってことを示している。 だけど、関数型プログラミングってのは、処理の順番を気にしない。・・・まぁ、原則的には。 数学的な関数の適用というのは、集合の各要素に対して個別に関数処理をすることで、順番なんて関係ないんだよね。まぁ、遅延評価とか、末尾再帰とか、現状のコンピュータ上で実行するための話ってのは、どうしても出てくるわけだけれども。 そう、問題は現状のCPUのアーキテクチャにある。マシン語レベルで順次処理と条件分岐が大前提として

    sirocco
    sirocco 2013/04/23
    "関数型プログラミングってのは、処理の順番を気にしない。"
  • 圏論とかモナドなんて簡単だからscalaを使って説明してみた - だらだらしてたいなぁ

    はじめに 関数型といえばモナド、モナドといえば難しいという事が巷で言われていますが、いきなりモナドを理解しようとするから難しく思えるだけで、圏論から順序を追って理解していけば全然難しく無いんだよって事を分かって貰えればいいなぁと思い書いて見ることにしました。 ただ、圏論といっても適用範囲がとっても広く、応用編になると分けわかんなくなってくるので、ここではプログラミング分野に特化したFP(functional programing)圏論*1について書きます。 また、説明を簡単にする為に細かい部分をいろいろ省略しています。学術的な定義としては正確ではないので、このエントリの説明は大体合ってる位の気持ちで読んでくださいね。 尚、ぼくは圏論の詳しい事はさっぱり分からないので、学問的な話を振られても回答できませんキリッ 圏ってなんなの? 圏論と言えば、圏です。 圏って何なのかというと、対象(obje

    圏論とかモナドなんて簡単だからscalaを使って説明してみた - だらだらしてたいなぁ
    sirocco
    sirocco 2013/04/20
    この説明面白そう。
  • 関数

    sirocco
    sirocco 2013/04/16
    ドットットットット。排気音に特色のあるカワサキW1で通勤していた高校の数学の先生がショークで黒板に四角い箱を書いて中に「BB」と書いた。BBと言えば有名な女優だ。M川が「ブリジット・バルドー」と言う。
  • こわくない関数型言語【14-B-7】デブサミ2013

    Kota Mizushima (on a diet) @kmizu デブサミ2013の「こわくない関数型言語」の登壇者がアカデミックな背景持ってる人が多くて、これは「こわい関数型言語」になるのでは、というのが某所で流れてた件について。や、何もないですけど、 2013-02-10 14:52:51 takesako (y0sh1) @takesako 明日のデブサミ2013で【14-B-7】「こわくない関数型言語」のパネルディスカッションを17:45~開始します。参加する方しない方どちらも #kowakunai で「関数型言語のこわそうな部分」につぶやいていただけないでしょうか。 http://t.co/bNpKirCC 2013-02-13 13:51:59

    こわくない関数型言語【14-B-7】デブサミ2013
    sirocco
    sirocco 2013/02/14
    変数に代入できない、whileやforのループがない、それでプログラムが組めるのか・・・その疑問を解くためにSICPを読んで挫折するとしばらく立ち上がれない。(ここからならきっと大丈夫 http://www.shido.info/lisp/idx_scm.html
  • 函数 - ウィクショナリー日本語版

    語[編集] 名詞[編集] 函 数(かんすう) ある変数に依存して決まる値あるいはその対応を表す式。 (一般化された定義)数の集合に値をとる写像。 語源[編集] 日語としての関数はもともと「函数」と書く。これは英語 "function" の中国における訳語である函数 (hánshù) をそのまま輸入したものであるが、「函」が漢字制限による常用漢字に含まれなかったため1950年代以降、同音の「関」へと書き換えがすすめられた。 翻訳[編集] 英語:function 参照[編集] プロジェクト:数学/函数と関数 中国語[編集] 名詞[編集] (繁): 函數/ (簡): 函数 (hánshù) 関数。

    sirocco
    sirocco 2012/08/06
    関数プログラミングの関数はもともとは「函数」と書く。「函」は「箱」の意味を持ち "function" が「ブラックボックス」の意味合いを含むことから、「函数」は "function" の音訳であるとともに意訳である。
  • 関数型言語の紹介

    注:動的型付きか静的型付きかは、すでに述べられているので触れない。 SML その名の通り標準化された ML(Meta Language)。ML では、関数の型を書かなくても、正しいコードであれば型が推論でき、推論できた場合は型レベルの誤りがないことが保証される。いくつか実装があるが、著者としては東北大学で開発されている SML# に期待している。 OCaml フランスの INRIA が開発した ML 系の言語。コンパイルされたコードが高速に動作する。O は、オブジェクトを表しており、参照型以外にもレコード型や配列に対して破壊的な代入が可能となっている。モジュールの機能が多彩。 F# OCaml を基にして作られた .NET 上の ML 系言語。OCaml と互換性のある標準ライブラリを備える他、.NET のライブラリが簡単に使えるようになっている。 Scala Java VM 上でオブジェ

  • 関数プログラミング入門

    constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだGenya Murakami

    関数プログラミング入門
    sirocco
    sirocco 2011/12/20
    情報オリンピック春季トレーニング合宿 2010/03/22 田中英行
  • 有限会社ITプランニング

  • http://pllab.is.ocha.ac.jp/~asai/jpapers/sakaue.pdf

  • InfoQ: いま日本で、関数プログラミングが熱い 「函数プログラミングの集い」レポート

    Rustが再評価される:エコシステムの現状と落とし穴 In this article, we share findings and insights about the Rust community and ecosystem and elaborate on the peculiarities and pitfalls of starting new projects with Rust or migrating to Rust from othe...

    InfoQ: いま日本で、関数プログラミングが熱い 「函数プログラミングの集い」レポート
    sirocco
    sirocco 2011/10/05
    え! そんなに少ないの? 検索すると自分のブログがヒットする訳だ。VBの代りに使っています! 「明らかに日本国内で関数型言語の実用的なレベルでの使い手は100名を超えている」。
  • ラムダ計算の勉強のしかた、プログラム意味論 - きしだのHatena

    先日のエントリで手続きを記述するという側面と、式を記述するという2つの側面があるということを書きました。 プログラムの理論とはなにか そして、手続きの性質として代表的な、アルゴリズムについての勉強のしかたについてまとめてみました。 アルゴリズムの勉強のしかた そこで、今回は、式を記述するという側面の勉強のしかたと、あとこの分野は自分でもまだ全然勉強してなかったので、これからどういうを読もうと思っているかをまとめてみます。 プログラム意味論 プログラムは必ずプログラム言語、少なくとも記号で記述します。*1 そこで、プログラムの勉強という点では、どのように動くかというアルゴリズムの勉強だけではなく、どのように書けるか、書いたものにどのような性質があるのかということも知る必要があります。 例えば、2005年あたりからRubyのような動的型付け言語が流行りだし、Javaなどの静的型付けの言語との

    ラムダ計算の勉強のしかた、プログラム意味論 - きしだのHatena
  • partake.in

    This domain may be for sale!

    sirocco
    sirocco 2011/07/21
    骨折入院で予定がボロボロになってしまったのでキャンセルしました。
  • RazyK - Rubyで実装した純粋関数型言語LazyK処理系 - ruby trunk changes

    RazyK をリリースしました。RazyK は Ruby で実装した純粋関数型言語 LazyK の処理系です。 インストール rubygems.org に gems パッケージを登録してあります。gem コマンドでインストールできます。 $ gem install razyk 依存ライブラリ等 以下の gems パッケージに依存しています。 rack ruby-graphviz また ruby-graphviz を利用するためには GraphViz がインストールされていて、dot コマンドが利用できないといけません。 [追記]大事なことを書き忘れていました。Ruby 1.9 でしか動作確認していません。1.8 だと動作しないかもしれません。[/追記] [追記]1.8 で存在しないメソッドを利用していたところがあったので修正して 0.0.1 をリリースしなおしました。[/追記] 使いかた

    RazyK - Rubyで実装した純粋関数型言語LazyK処理系 - ruby trunk changes
  • 関数の話をしよう(1/2)- @IT

    第2回 関数の話をしよう 山下 伸夫 株式会社タイムインターメディア 2008/11/28 関数型言語に分類されるHaskell。C言語などの手続き型言語とまったく異なるプログラミングの世界に踏み出してみよう(編集部) Haskellは関数プログラミングのための言語だというのだから、関数が出てこなくては話にならない。今回は、関数の話をしよう。 関数抽象と関数適用 前回、話した標準体重値を計算するパターンは、 (〈身長値〉 ^ 2 )*〈標準BMI〉 である。〈標準BMI〉は固定された値(22.0)だから、標準体重値は〈身長値〉が変わればそれに応じて変化する。標準体重値の計算は、 (〈?〉 ^ 2 )*〈標準BMI〉 の〈?〉の部分を具体的な身長の値で「置き換え」てやればいいということになる。〈?〉を一種の穴のようなものだと考えれば、そこへ値をはめ込めばよいわけである。 この計算パターンを、

  • JavaScriptでカリー化 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    JavaScriptでカリー化。ありがち、つうか実際にあるでしょうね。小ネタと思ってやりはじめたら、意外と混乱した。一種のメタプログラミングのはずだが、実際にはテキスト加工処理。 内容: カリー化ってなに? カリー化を行う関数を作る:準備 カリー化を行う関数を作る:テキストのパッチワーク カリー化を行う関数を作る:組み立て ●カリー化ってなに? 2引数の関数f(x, y)に対して、「gがfのカリー化」だとは、f(x, y) = g(x)(y) が常に成立すること -- ゴチャゴチャ説明するより実例実例: functio sum(x, y) { return x + y; } このsumのカリー化の例: function curried_sum(x) { return function (y) {return sum(x, y);} } curreid_sum関数は1引数で、戻り値として関数

    JavaScriptでカリー化 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • Functional Javascript

    Functional is a library for functional programming in JavaScript. It defines the standard higher-order functions such as map, reduce (aka foldl), and select (aka filter). It also defines functions such as curry, rcurry, and partial for partial function application; and compose, guard, and until for function-level programming. And all these functions accept strings, such as 'x -> x+1', 'x+1', or '+