タグ

functional languageに関するfubar_fooのブックマーク (29)

  • 食べられないほうのカリー化入門 - Qiita

    『カリー化』(Currying) という概念をご存知でしょうか。"Curry" はべ物のカレー(Curry)と同じスペルですが、ここでいう Curry はそれとは別のもので、多くのプログラミング言語に応用できるかもしれない、とても便利かもしれない概念です。 では教えてくれ。”カリー化”とはなんのことだ? 『ふたつの引数のうち、大きい方の数を返す』という機能を持った関数 max を実装したいとしましょう。そのようなとき、大抵は次のように定義すると思います。 この関数 _max も『大きい方の数を返す』という機能を持っていますが、_max は max とは呼び出し方が少し異なります。たとえば、_max で 1 と 2 のうち大きい方を求めるには、 _max(1)(2) のように書きます。 _max が通常の max と異なるところは、関数を呼び出すときに引数をひとつづつ渡すようになっていると

    食べられないほうのカリー化入門 - Qiita
  • Ladder of Functional Programming 〜関数型プログラミングのレベル分け〜 - Qiita

    LambdaConfがツイートにて関数型プログラミングのレベル分けを発表していました。今後LambdaConfから発信される発表にはこのレベルが表記され, 自分のレベルにあったコンテンツが探しやすくなるようです。このレベル分けはプログラマの優劣を付けるようなものではなく, 広く深い関数型プログラミングの世界で自分が今どのレベルにいるのかを適切に理解し次にどこに向かうべきなのかを知るのにたいへん役に立つものだと思います。 表を眺めてみると関数型プログラミングというよりかはHaskellのレベル分けのような印象も受けますが、広く知られるべきだと思ったので翻訳してみました。僕が未熟でトンチンカンな訳をしている箇所もあると思うので、何か見つけた場合は遠慮なくコメントや編集リクエストをお願いします LambdaConf Ladder of Functional Programming (LOFP)

    Ladder of Functional Programming 〜関数型プログラミングのレベル分け〜 - Qiita
  • 関数型言語のウソとホント - Qiita

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

    関数型言語のウソとホント - Qiita
  • はてなブログ | 無料ブログを作成しよう

    台北市立動物園と迪化街めぐり 子連れ台湾#5 年越し台湾旅行5日目、レジャーや友人との事を楽しむ日です。前日の様子はこちら www.oukakreuz.com 台北市立動物園へ パンダ館 パンダが見られるレストラン 迪化街へ 林茂森茶行でお茶を購入 小花園で刺繍グッズを購入 黒武士特色老火鍋で夕 台北市立動物園へ 松…

    はてなブログ | 無料ブログを作成しよう
  • 末尾再帰 - しんちゃん | パブー

  • 「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)

    「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)

    「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
  • Monad tutorial

    ESPM2 2018 - Automatic Generation of High-Order Finite-Difference Code with T...Hideyuki Tanaka

    Monad tutorial
  • カリー化 != 部分適用 - kmizuの日記

    最近、ネット上でカリー化に関する記事を読んでいると、特にGroovy界隈でカリー化に関して誤解がまかり通っているようなので(特に実用的なGroovy: カレー化クロージャーによるファンクショナル・プログラミングはひどい。そもそも、Groovyの標準ライブラリ自体がカリー化を行うための関数ではないものにcurryとか付けてるから仕方無いのかもしれんが)、一言言っておく。 カリー化というのは、Groovyで言うと、 def add = {x, y -> x + y} のように、xとyという複数の引数を取って値を返す関数を def add = {x -> {y -> x + y}} //間違ってパースできないコードになっていたので修正(12/17) のように、一つの引数xをとって、「yを引数にとって値を返す関数」を値として返すような関数に変換すること、あるいは最初からそのように表現することを言う

    カリー化 != 部分適用 - kmizuの日記
    fubar_foo
    fubar_foo 2011/09/10
    自分も間違えていた
  • http://www.codecommit.com/blog/ruby/monads-are-not-metaphors

  • モナドはメタファーではない · eed3si9n

    2011-05-28 Scala界の関数型プログラミング一派を代表する論客の一人、@djspiewak が 2010年に書いた “Monads Are Not Metaphors” を翻訳しました。翻訳の公開は人より許諾済みです。翻訳の間違い等があれば遠慮なくご指摘ください。 2010年12月27日 Daniel Spiewak 著 2011年5月29日 e.e d3si9n 訳 僕は今、約束を破るところだ。およそ三年前、僕は絶対にモナドの記事だけは書かないと自分に約束した。既にモナドに関する記事は有り余っている。記事の数が多すぎてその多さだけで多くの人は混乱している。しかも全員がモナドに対して異なる扱い方をしているため、モナドの概念を初めて学ぼうとする者は、ブリトー、宇宙服、象、砂漠のベドウィン (訳注: アラブ系遊牧民) の共通項を探す努力をするハメになっている。 僕は、この混乱した

  • Everything Your Professor Failed to Tell You About Functional Programming | Linux Journal

    Everything Your Professor Failed to Tell You About Functional Programming I've been trying to learn Haskell lately, and the hardest thing seems to be learning about monads. "Monads in Ruby" and "Monads for Functional Programming" helped me finally to break the ice, but more importantly, they gave me a glimpse behind the veil. I finally began to understand something that is trivial to people such a

  • Monads in Ruby, Part 1: Introduction - Moonbase

    This article owes a great debt to Monads as Containers and A Schemer’s Introduction to Monads, each of which greatly advanced my understanding of the topic. Introduction Monads have been getting a lot of press lately in connection with the Haskell programming language. They’re a very powerful programming tool in functional languages, but all too often they’re described as some sort of black magic

    fubar_foo
    fubar_foo 2011/05/13
    haskell以外の言語でmonadを使う
  • howm wiki - モナド

    This Wiki is frozen. Use GitHub for reports, discussions, etc. 訳あって Haskell 試中. モナドって, こんなイメージでいいんでしょうか? (参考ページ) やさしい Haskell 入門 (バージョン98) モナドのすべて haskell-jp ML MonadicContinuationPassingStyle (英語) 2ch Haskell スレ過去ログの 500 前後 慣れない内容は, 頭がしんどい 慣れない表現も, 頭がしんどい 両方いっぺんだと, もう○×△□… なので, ひとまず haskell は置いといて, scheme にしてみます. Intro. ふつうの「値」を包んで, ふわふわした謎な外見の何か(以下「ふわふわ」) にするラッパー ret (return のつもり)を考えよう. (ret 3)

  • The Haskell 98 Language Report

    Simon Peyton Jones [editor], Microsoft Research, Cambridge Lennart Augustsson, Sandburst Corporation Dave Barton, Intermetrics Brian Boutel, Victoria University of Wellington Warren Burton, Simon Fraser University Joseph Fasel, Los Alamos National Laboratory Kevin Hammond, University of St. Andrews Ralf Hinze, University of Bonn Paul Hudak, Yale University John Hughes, Chalmers University of Techn

  • 第28回 例外やエラーに対する処理能力を加えるエラー・モナド

    Haskellの例外処理は,IOやSTMといった特定のモナドの内部でのみ扱えるようにデザインされています。しかし,こうした制限が行き届くのは,あくまで例外を捕捉し処理する場面に限られます。例外やエラーの発生する個所自体はこうした制限にはとらわれません。ありとあらゆる場所で発生する可能性のある例外やエラーに対する処理を,より統一的に扱うにはどうすればよいでしょうか? この問題に対する解決策として,第15回で説明したモナド変換子を利用できます。利用できる範囲はあくまでモナドの内部に限られますが,特定のモナドでしか例外を扱えないことと比べれば一歩前進でしょう。今回はモナド変換子を利用する2種類の方法を紹介します。 成功時と失敗時の情報を保持するEither型 第5回では,失敗する可能性のある計算結果を表すのにMaybe型を利用できることを説明しました。Maybeに対してモナドを定義することで,失

    第28回 例外やエラーに対する処理能力を加えるエラー・モナド
  • Erlang に興味を持った人へ - Twisted Mind

    随時加筆してます 追記 2011-06-18 rebar.config の erl_opts から fail_on_warning から warnings_as_errors へ変更した rebar.config の xref に fail_on_warning を追加した インストールする Erlang を R14B03 へ変更した ライブラリ紹介に webmachine 、folsom 、ibrowse 、Emysql 、 statebox を追加した 2011-04-02 rebar.config の erl_opts から debug_info を消した rebar.config の実際に使っているベースを公開 Makefile に make edoc を追加した configure の例を hipe を使わないようにしているので native-lib を外した EUnit につい

    Erlang に興味を持った人へ - Twisted Mind
  • Easy Monad

    8. Monad この文書では Monad について述べます。Monad は成功しないかも知れない 計算を組み合わせる手法で、探索、IO、構文解析 などに使われます。 Monad は実はそれほど難しい概念ではありません。 "Haskell は Monad を使って参照透明性をおかすことなく IO を実現している。" といううたい文句や、"Monad を理解するのは難しいかもしれない" などという脅し を気にしないで、Haskell 98 にある定義を見れば分かりやすいと思います。 上級 Haskeller は Monad を駆使して難しいことをやりますが、 それは Monad が難しいのではなく、彼らのやっていることが難しいだけです。 つまり、Monad を使うと難しいことが出来るが、Monad そのものが難しいわけではない ということです。 1. Monad は class Haskel

  • マルチコア危機:ScalaとErlangの対立

    ブロゴスフィアでは最近Scala対Erlangの議論がややヒートし続けている。マルチコアの世界(参考記事)が訪れようとしている今、いかにマルチコア危機を解決するかが問題になっている。ScalaとErlangはその解決法たらんとしている言語だが、少し違いがある。それぞれのアプローチの長所短所はなんだろうか? 問題 ムーアの法則はもう通用しない。かつてのようなクロック周波数の向上(リンク)は見込めず、かわりにコアの数を増やそうとしている。今の時代、あなたのノートPCでさえも2つコアを搭載していることだろう。 2つ以上のコアを有効に使うには、アプリケーションが並列処理を意識してないといけない。もしあなたの顧客が8コアのマシンを買ったとしたら、たとえそれをあるアプリケーションの専用マシンにしたとしても、そのアプリケーションがCPU性能の12%しか使えなくてもおかしくない、とあなたは顧客にどうにかし

    マルチコア危機:ScalaとErlangの対立
  • 自由に働ける新宿のチャットレディ求人は大学生にもおすすめ

    大学生にピッタリな新宿の在宅チャットレディ求人 大学生の方で、楽しい大学生活で必要になるお金をもっと確保したいという方は、新宿のチャットレディプロダクションで在宅チャットレディになってみるのもオススメです。在宅チャットレディ求人の魅力は、プロダクションからパソコンやマイクなどを借りて、自宅で配信環境を作って仕事を行います。プロダクションのチャットルームのような、充実した環境での配信ではありませんが、忙しい大学生の方でも、自宅で配信ができるので仕事がしやすいというメリットが出てきます。 日中は大学で講義を受け、夕方はサークルや友達との飲み会などで帰ってくるのは21時以降という女子大生の方も多いですが、そんなハードスケジュールの方でも在宅チャットレディなら問題ありません。22時や23時頃から1、2時間程度配信をすれば、それでお金を稼げるからです。普通のコンビニなどのバイトでも、夜遅くから仕事

  • Route 477(2007-07-18)

    ■ [haskell] モナドについてなんか分かった気がした モナドって「結局何なの?」ってのがいまいち分からずにもやもやしてたんだが、なんか分かった気がしたのでメモ。 関数型言語では値が関数から関数へと流れていくことで計算が行われる。 このプロセスに「一皮被せる」ことで、計算の筋とは別にいろいろな「仕掛け」を組み込むのがモナド。 値 a をただ流すんじゃなくて、Maybe a のようにモナドという箱に入れて、箱に入ったものどうしの演算を定義することで仕掛けを作る。 Haskellでは、モナドを「returnとbind(>>=)というメソッドが定義されている型」で表す。returnは値を箱に入れる関数。>>=は値を流す関数。 class Monad m where (>>=) :: m a -> (a -> m b) -> m b return :: a -> m a returnの型は

    Route 477(2007-07-18)