タグ

Functionalに関するyuguiのブックマーク (42)

  • 超関数型プログラミング

    この記事はFOLIO Advent Calendar 2022の23日目です。 ソフトウェア2.0 ソフトウェア2.0 という新しいプログラミングのパラダイムがあります。これは Tesla 社のAIのシニアディレクターだった Andrej Karpathy が自身のブログ記事("Software 2.0")で提唱した概念で、 ニューラルネットワーク のような最適化を伴うプログラムを例に説明されています。 従来のプログラム(Software 1.0)は人間が命令に基づいたプログラムを作成し、望ましい挙動を行わせます。それに対してニューラルネットワークのようなプログラム(Software 2.0)では人間はある程度の自由度をパラメータという形で残したプログラムを作成し、「入出力のペア」や「囲碁に勝つ」というような教師データや目的を与えてプログラムを探索させるというものです。 画像出典: "So

    超関数型プログラミング
  • Purely Functional Data Structures ex3.3 leftist heap

    Ist. Superiore Marini-Gioia - Enzo Exposyto•231 views

    Purely Functional Data Structures ex3.3 leftist heap
  • PureScript:JavaScriptにコンパイルされるHaskellライクな言語

    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...

    PureScript:JavaScriptにコンパイルされるHaskellライクな言語
  • http://biblion.epfl.ch/EPFL/theses/2007/3899/EPFL_TH3899.pdf

    POUR L'OBTENTION DU GRADE DE DOCTEUR ÈS SCIENCES PAR Dipl.-Inform., RWTH, Aachen, Allemagne et de nationalité allemande acceptée sur proposition du jury: Prof. M. A. Shokrollahi, président du jury Prof. M. Odersky, directeur de thèse Prof. V. Kuncak, rapporteur Dr D. Syme, rapporteur Dr M. Zenger, rapporteur Object-Oriented Pattern Matching Burak EMIR THÈSE NO 3899 (2007) ÉCOLE POLYTECHNIQUE FÉDÉ

  • ceylonとか話題になってるらしいが、あえてpizzaを紹介してScalaの誕生理由とかAlgebraic Data Typesとかいろいろ考えてみる - xuwei-k's blog

    なんだか、最近ceylonっていう新しいJVM上の言語がでたらしく、自分のTL上では話題になってました・・・ が、自分は興味わかないというか、Scalaがこれだけtwitterをはじめものすごく実用でつかわれてるのに、今更新しい言語つくって普及させるとかどうなの?という立場です。まぁ言語仕様もちゃんと見てないであれなんですが(・ω・`) だれかceylonの魅力を延々と語ってください。 たしかに、Scalaは複雑すぎる的な印象は仕方ない部分もあるかもしれないですが・・・とか考えてるときに、そういえばScalaを作成する以前にodersky先生がつくっていた言語あったよなーとか思い出して、前から書こうかと思っていたのでpizzaについて紹介してみます!というよくわからない流れヽ(`▽´)/ pizzaというのは、Scalaの作者であるodersky先生がScalaを作る前につくっていたJVM

    ceylonとか話題になってるらしいが、あえてpizzaを紹介してScalaの誕生理由とかAlgebraic Data Typesとかいろいろ考えてみる - xuwei-k's blog
  • Search

    Releases, Offers & More Be the first to hear about our newest content, best promotions and upcoming events. Plus get 25% off your next purchase. Newsletter Sign Up Download Accounts Your email address is your account identifier. You can create a password, or just download from the links sent via email. My Orders (Resend order emails) How We're Different Hands-on instructions Solutions to real-worl

  • あなたならどう書く - 可変個のネストしたブロックつきメソッドの呼び出し - ruby trunk changes

    Ruby では Dir.chdir とか Kernel#open, Mutex#synchronize のように、ブロックを渡してそのブロックの呼び出しの前後に準備/後片付けの処理で挟むためのメソッドというのがありますね。ブロックから抜けると自動的に後始末をしてくれるので便利です。 ブロックの中でそのようなメソッドをネストさせることもできます。 @mutex.synchronize do open(file) do ... end end そこで複数のオブジェクトについてそのようなブロックつきメソッドをネストさせて呼びだしたい、しかもオブジェクトの数は可変個(たとえば配列に入ってくる)にしたいという時にどう書くのか考えてみました。思ったよりも難しかったです。 class A def initialize(n) @n = n end def guard(&blk) begin p [:bef

    あなたならどう書く - 可変個のネストしたブロックつきメソッドの呼び出し - ruby trunk changes
  • 遅延評価と末尾再帰と余再帰 - あどけない話

    遅延評価では再帰の効率はどうなるかという問題です。Real World Haskell で、末尾再帰は重要だと言った後に、遅延評価では末尾再帰なんて気にするなとちゃぶ台を返しています。ようやく haskell-cafeで答えを見つけたので、Luke Palmer さんの許可を得て訳を公開します。 Luke Palmer さんの説明 私が Haskell でプログラミングするときは、通常関数を末尾再帰にはしません。(Int や Bool など)正格な値へ畳み込む場合、末尾再帰を使うのはよいことです。しかし帰納的な遅延構造を作成する場合、関係する用語は(私の記憶が正しければ)「余再帰」(corecursion)であり(訳注:mapは再帰かつ余再帰だそうですが、専門的すぎるので普通の再帰でいいと思います)、末尾再帰とはまったく異なります。 リストに対し末尾再帰で map する関数を例として考えま

    遅延評価と末尾再帰と余再帰 - あどけない話
  • ホワット・ア・ワンダフル・ワールド 人間が情報を与えるか,機械が推論して情報を増やすかという違い

    型宣言と型推論とか,手動メモリ管理と GC とか,要するに全部,人間が手で情報を与えるか,機械が推論するかということに一般化できると思う. んでまぁ,一般にうれしいのは,最初のプロトタイプは人間が不必要なことまで考えなくても動いてくれて,後々必要になってきたらボトルネック部分に情報を追加してあげると,さらに最適なコードが出る,ということをインクリメンタルにやっていけるようなモデルだと思う. その点,手続き型言語ってのは,細かいところまでを最初からいきなり全部指定しないといけないから,人間の脳に対する負荷がデカいし,柔軟性も失われてしまうし,機械がプログラムの意味を変えないで最適化できる余地も無くなってしまう.というようなことは,これまでにも散々書いてきたことなので,まぁ良いとして. いろいろ気になった記事があったので,単なるメモ. lethevert is a programmer のコメ

  • Structural C++ - d.y.d.

    19:05 08/05/31 私が一番好きなSFと言えば『百万年の船』ですが、 昨日読んで『タウ・ゼロ』が二番目に好きなSFに なりました。最近の感想が大袈裟です。このどうしようもなく取り返しのつかない方向に お話が突っ走っていくっぷりが楽しい。あと、私が感情移入する気になれる主人公ってそうそういない。 いやそれはともかく、 まだこの二冊しか読んだことないのですけど、どうも自分はポール・アンダースンを読み漁るべきっぽいな。 UTPC UTPC というのに参加してました。 みんな解いてるから解けるはず!と思って挑み続けた E が結局解けずじまいでした。 うわーん。K かせめて H に時間使うべきだった。しかし若者勢とロートル勢のバランスが絶妙だ。 → 提出物一式。 13:58 08/05/29 ICFPの ICFP Programming Contest のページが更新されてました。

  • scanl で作る自然対数への (無限) 遅延リスト in C++ - Cry's Blog

    scanl 相当を実装したので適当に遊んでみるテスト. http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/*checkout*/cradle/cradle/libs/range/test/integration/lazy_list_to_exp_utf.cpp?content-type=text%2Fplain MSVC7.1, 8.0, GCC4.0.x, 4.1.x でテスト済み.余計なものごちゃごちゃくっついているので分かりにくいですけれど,中核となっているのは range::assign( range::iterating( as_pure( _1 + 1.0 ), 1.0 ) | range::view::transform( as_pure( 1.0 / _1 ) ) | range::view::scan_left( as_pure(

    scanl で作る自然対数への (無限) 遅延リスト in C++ - Cry's Blog
  • Concurrent Clean : 文字列 - lethevert is a programmer

    せっかく副作用がないのだから、部分文字列の切り出しは、メモリコピーなしに実装してあるんだよね、ということを確認したくなった。 該当ソース。 empty_string: movl $zero_length_string,a0 ret section (sliceAC) sliceAC: mov 4(a0),a2 test d1,d1 jns slice_string_1 xorl d1,d1 slice_string_1: cmp a2,d1 jge empty_string cmp d1,d0 jl empty_string inc d0 cmp a2,d0 jle slice_string_2 mov a2,d0 slice_string_2: sub d1,d0 lea 8+3(d0),a2 shr $2,a2 lea -32(a4,a2,4),a1 cmpl end_heap,a1

    Concurrent Clean : 文字列 - lethevert is a programmer
  • 関数型言語とOOと副作用 - sumiiのブログ

    http://www.rubyist.net/~matz/20061007.html#p03 Haskellのモナドを「副作用」と思うか、「副作用を表現する(こともできる)データ構造であって、副作用そのものではない」と思うか…という話はさておき。 しつこいようだが、そもそも「オブジェクト → 状態 → 副作用」という連想がmisleadingなmythであるように思われる(駄洒落ではありません)。80〜90年代には、TAPLの32章「Purely Functional Objects」に代表されるような、λ計算におけるオブジェクトの様々な表現が提案されたし、Abadi & CardelliのA Theory of Objectsにも関数型オブジェクト計算の話題が大量にある。Javaのminimalな計算モデルであるFJですら、破壊的代入がないという意味で関数型言語になっている。要するに、O

    関数型言語とOOと副作用 - sumiiのブログ
    yugui
    yugui 2006/10/16
    "Purely Functional Objects" 純粋関数型とOOは直交
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
    yugui
    yugui 2006/10/08
    純粋関数型の世界から見た非純粋/非関数型の世界。
  • OCaml プログラミング入門

    OCaml のすすめ OCaml とはフランスの 情報技術系の研究機関の INRIA で開発されている関数型言語 ML (の方言) です。ML には多相型、型推論、ガーベージコレクション (GC)、 データ構造のパターンマッチング等、プログラミング言語理論の研究の 成果 (すごく最新のものと言うわけでは無いそうですが) が詰め込まれ ています。これらの目的・効用は、 コードの再利用の範囲が大きい (多相型) コードの記述量が短かくなる (型推論・データ構造のパターンマッチング) バグの入り込む余地が少なくなる (GC、関数的(副作用の少ない)プログラミング) 等です。私は OCaml を研究でのデータ処理をはじめ、作成するプログラムほとんど 全てにおいて日常的に使っているのですが、 とにかく開発効率が良いです。 コンパイル時の型チェックの厳しさには慣れないとちょっと面倒に感じる かもしれま

  • 純粋関数型言語とO/R mapper - lethevert is a programmer

    DBアクセスをサポートする現代的なプログラミング言語には、O/R mapperが欠かせないような気がするのだけれど、当にそうでしょうか? なんて書く以上は、そうではないことを考えているのですけれど。 そもそも、何故O/R mapperというものが存在するかといえば、SQLとオブジェクト指向言語の親和性があまりにも低くて、SQLの構造に依存したドライバの類がことごとく使いにくいために、言語の特性に近いインターフェースのライブラリで、その部分を上手く隠してやりたいという欲求から出たものではないかと思っているのですが。。。(もうちょっと考えると、オブジェクト指向言語の手続き型的な側面が、SQLとの親和性を低くしているので、言語のオブジェクト指向的なところを上手く使って宣言的な記述に近づけたライブラリが、O/R mapperの意味なのではないかという風な仮説を立ててみたりしているのですが) で、

    純粋関数型言語とO/R mapper - lethevert is a programmer
    yugui
    yugui 2006/08/30
    関数型言語では遅延リストが得られればORM不要。
  • http://cappuccino.jp/keisuken/logbook/20060824.html

  • Concurrent Clean : Yコンビネータ - lethevert is a programmer

    [id:desumasu:20060806:1154868741]を見て思い出した。 CleanでYコンビネータを書くとき、 y f = let g = f g in gとか書いちゃうのだが、これは来の意味から言っておかしい。 そこで、一般的なYコンビネータの定義 (define Y (lambda (f) ((lambda (proc) (f (lambda (arg) ((proc proc) arg)))) (lambda (proc) (f (lambda (arg) ((proc proc) arg)))))))を見習って、 y f = (\p = f (p p)) (\p = f (p p))とかと書くと、型エラーになってしまう。pに型を正しく付けられないのだ。 そこで、適当な型を用意してやって、 ::P a = P ((P a) -> a) y f = (\(P p) =

    Concurrent Clean : Yコンビネータ - lethevert is a programmer
  • Concurrent Clean : L.L.Ring : Collatz予想の収束 - lethevert is a programmer

    当はRound 2は観戦にしておこうと思っていたのだけれど、 http://idm.s9.xrea.com/ratio/2006/07/12/000484.html を見て、なにか挑戦された気がしたので、結局書いた。 何を挑戦された気がしたかというと、「問題を読み替えないで実装するためには、副作用が必須だ」という主張(というように私は理解したのだけど、間違っていたらごめん)。だから、純粋関数型だと読み替えないで実装するのは難しいのじゃない?(意訳)というような内容をみて、「これは挑戦に違いない」と勝手に思い込んだのでした。 - まずは、Collatz予想の1ステップ分の関数定義。これはシンプルに。 f 1 = 1 f n | isEven n = n/2 = 3*n + 1さて、これをどうすれば言いかというと、Cleanには(そしてHaskellにも)、与えられた関数を何度も適用しながら

    Concurrent Clean : L.L.Ring : Collatz予想の収束 - lethevert is a programmer
    yugui
    yugui 2006/07/13
    挑戦を受けて立ってくれたハッカーがいた。そうか、非正格だから? 無限列でも構わず作ってしまえばいいのか。
  • はてなブログ | 無料ブログを作成しよう

    オーベルジーヌ実レポ べ物の鼻塩塩(未だに通じるのかな) オーベルジーヌというカレーをご存知だろうか 都内にあるデリバリー専門のカレー屋で、 ロケ弁などで大人気の格欧風カレーが楽しめるらしい いいな〜 いいな〜オブザイヤー 都内の奴らはこんな良いモンってんのか 許せねえよ………

    はてなブログ | 無料ブログを作成しよう