タグ

haskellに関するysano2005のブックマーク (142)

  • 本物のプログラマはHaskellを使う:ITpro

    筆者 shelarcy Haskellは,関数型プログラミングというジャンルに属する言語です。Haskellや関数型プログラミングを題材に物事を見ていくことで,今まで思いもよらなかったような未知の世界を知ることができるでしょう。 プログラミング言語を学ぶという行為には, 言語の基的な文法や考え方を理解する 言語の文化圏で広く使われている考え方に親しんでその言語らしい書き方を習得する 単に言語を使ってできること以上の知恵を学ぶ の3段階があります。この連載では,三つ目の段階を目標に,Haskellプログラミングの世界を一つひとつ丁寧に紹介していきます。 更新は毎月第1水曜日(1月のみ第2水曜日)

    本物のプログラマはHaskellを使う:ITpro
  • Unifying events and threads

    Project introduction: This project uses a language-based technique to unify two seemingly opposite programming models for building massively concurrent network services: the event-driven model and the multithreaded model.  The result is a unified concurrency model providing both thread abstractions and event abstractions.  We implemented the unified concurrency model in Haskell, a pure, lazy, fun

  • stm-and-io

  • 第6回 局所的な「状態」を利用するためのStateモナド

    プログラムを書いている中で,多くの式で同じ値を使いまわしていたり,値の変化に一定のパターンが生じていることに気づくかもしれません。こういう時,式に局所的(local,ローカル)な「状態(State)」があれば,プログラムをすっきり書くことができると思うのではないでしょうか? 実際にLispにはsetf(Schemeならset!)という変数の値を書き換える機能があり,OCamlなどのML系の言語には参照型(reference type,リファレンス型)という値の再代入を許す特別な変数を扱う機能があります。 しかし,残念ながらHaskellのように純粋な関数型(purely functional)を標榜している言語には,このような書き換え可能な変数を持つことは基的に許されていません。書き換え可能な変数があると,「状態」の更新が複数個所で共有され,「プログラムを局所的にではなく,大域的(glo

    第6回 局所的な「状態」を利用するためのStateモナド
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

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

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • Parallel Scripting Now! : 404 Blog Not Found

    2006年12月10日02:00 カテゴリLightweight Languages Parallel Scripting Now! だんなだんな、20XX年を待たずとも、それってもうPugsでできまっせ。 Matzにっき(2006-11-27) プログラミング言語も超メニーコアの時代になって、 1PCに65536個くらいCPUが載るようになると 並列性を人間に取り扱える形で(つまり、あまり見せないように)、 取り扱える言語が求められるようになり、 FORTRANのベクトル化技術に類似するものが復権して スクリプト言語を含めて広く利用されるようになる。 Matzさんならもうご存じだったとは思うのですが。 On MacBook Pro (dual core) % /usr/bin/time pugs -e '(1..100000).>>sqrt' 9.27 real 9.09 user 0.

    Parallel Scripting Now! : 404 Blog Not Found
  • 第5回 ListではなくMaybeを使う意義

    Haskellを学んでいると,Maybeという型に遭遇します。 Maybeとは一体何でしょうか? なぜほかの型ではなくMaybeを使用するのでしょうか? 読者のなかにはこのような疑問を持った方もいれば,持たなかった方もいるでしょう。あるいは部分的な答えに「Haskellではこうするのだ」と納得して,そこで問いをやめてしまったかもしれません。いずれにせよ,何かを得ることを目的にHaskellを学んでいるのなら,今一度,何を知らないかを自覚し,疑問を思い起こすべきです。 与えられた情報をただ漫然と常識として受け止めてしまうと,答えとなるような知識を得ることはできません。答えを得るためには,問いが必要なのです。 今回はMaybe型の説明を通じて,そうした問いへの入り口を示したいと思います。 前回の補足 前回GHC6.6で使用する文字コードとして紹介したUTF-8Nは,標準化の議論が一時期されてい

    第5回 ListではなくMaybeを使う意義
  • defmacro - Writing A Lisp Interpreter In Haskell

    Introduction A while ago, after what now seems like eternity of flirting with Haskell articles and papers, I finally crossed the boundary between theory and practice and downloaded a Haskell compiler. I decided to do a field evaluation of the language by two means. I was going to solve a problem in a domain that Haskell is known to excel at followed by a real world problem1 that hasn't had much ex

  • 第3回 mapからモナドを理解する

    今回は「モナド(monad)」について説明します。モナドはHaskellの重要な特徴の一つなので,名前くらいは聞いたことがある人が多いでしょう。ただ,「モナドは難しい」という声もよく聞きます。 モナドとは一体なんでしょうか。前回,「HaskellはIOを取り扱うためにモナドと呼ばれる特別な仕組みを使用することで有名です」と書きました。Haskellは遅延評価を行うため,プログラマが処理の順番を確実に指定することができず,そのままでは入出力の処理には不向きです。モナドを使えば制御構造を導入できるため,この問題を解決できます。前回でいえば,(IO a -> IO a)にマッチする関数――finallyやprintThenAdd――を定義している部分がモナドに相当します。また,GHCiのプロンプトにもモナドが使われています。このように入出力操作を行うモナドの代表格が「IOモナド」です。ライブラリ

    第3回 mapからモナドを理解する
  • jugyo.org

  • Haskellの処理系をインストール。 - t-imaizumiのMacとかのはなし

    何はともあれ、処理系がないとどうしようもないのでDarwinPortsを使ってインストール。 GHC(Glasgow Haskell Compiler)とかいうのがデファクトスタンダードらしいので、こちらをDarwinPortsでインストールする。 port search ghcと、実行すると ghc lang/ghc 6.4.2 The Glorious Glasgow Haskell Compilation System ghc-devel lang/ghc-devel 6.5 The Glorious Glasgow Haskell Compilation System (development version)こういう結果が返ってきた。 女房と畳とソフトウェアは新しい方が良い、という格言に従って6.5をインストールしようと思ったけど、『development version』とある

    Haskellの処理系をインストール。 - t-imaizumiのMacとかのはなし
  • http://www.ipl.t.u-tokyo.ac.jp/~takeichi/attachments/bit.pdf

  • 五分間でReactive Programmingについて説明する(PDF)

    5分間で Reactive Programming について説明する shelarcy (shelarcy@capella.freemail.ne.jp) Reactive Programming とは • ある出来事に対し反応 (reaction) を返すと いう形でプログラミングを行うシステムのこ と • 主な対象 – Robot – AnimationGUI Reactive Programming の実現方法 • 言語処理系に持たせる – Reactive-C – The SL Language • フレームワークで実装する – Squeak の Morphic – Functional Reactive Programming Reactive Programming の実装方法 –Stream (信号処理)を使う –継続を使う • Callback でも実装できるが、準備

    ysano2005
    ysano2005 2006/09/08
    shelarcyさんによる
  • 第2回 多相性(ポリモーフィズム)への理解を深める

    今回説明するテーマは「多相性」です。英語ではpolymorphism(ポリモーフィズム)になります。多態性や多様性などと呼ぶこともあります。オブジェクト指向をご存じの方ならおなじみの言葉ですね。 多相性は「ある関数や型を,複数の型に対して使用できる」という性質を示す言葉です。こうした性質を持つ関数であれば,数値計算や文字列の連結,I/O(入出力)処理など一見全く違うように見えるような処理を,あたかも同じもののように扱うことができます。 なお,この連載ではその回の理解に必要な知識は解説していきますが,すべての機能を網羅的に説明していくことはしません。Haskellについて体系的に学習したければ,入門書や「Haskell 98 言語とライブラリ 改訂レポート」(原文はLanguage and library specification)を見てください。 前回の補足 この連載では,前回の記事に関

    第2回 多相性(ポリモーフィズム)への理解を深める
    ysano2005
    ysano2005 2006/09/07
    shelarcyさんによる
  • Hoge Hoge

    Haske 入門への In oduc on 木戸崇裕 aka shelarcy AutrijusTang said:“What’s as fast as C++, as concise as Perl, as regular as Python, as flexible as Ruby, as typeful as Java, and has absolutely nothing in common with PHP? It’s Haskell”. Haskell を何で知ったの? • ICFP (International Conference on Functional Programming) のコンテスト • LL (Lightweight Language) • IBM developerWorks の HaXML の記事 • Pugs, RType • Darcs, M

    ysano2005
    ysano2005 2006/09/02
    shelarcyさんによる
  • Software

    ysano2005
    ysano2005 2006/08/30
    The Haskell School of Expression
  • Google's MapReduce Programming Model -- Revisited

    Status To appear in the SCP journal History 2 January 2006 -- first draft published online 10 April 2007 -- major revision 1 July 2007 -- minor revision Author Ralf Lämmel Abstract Google's MapReduce programming model serves for processing large data sets in a massively parallel manner. We deliver the first rigorous description of the model including its advancement as Google's domain-specific l

    ysano2005
    ysano2005 2006/08/24
    「We use Haskell as a lightweight specification language to capture the essence of MapReduce computations in a succinct, executable and strongly typed manner.」
  • 第1回 関数型プログラミングの世界へようこそ - 本物のプログラマはHaskellを使う:ITpro

    Haskellというプログラミング言語を知っていますか? 全く聞いたことがないという人が多いかもしれません。そういう名前の言語があるのは知っているけど,どんな言語かは知らないという人もいるかもしれませんね。でも最近では,一部の先進的なソフトウエア開発者の間で,一種のブームと言えるほど熱狂的に受け入れられています。 なぜならば,Haskellは様々な優れた特徴を持っているからです。最初に,他の言語にはあまり見られない際だった特長を一つだけ紹介してみましょう。「遅延評価(lazy evaluation,怠惰評価ともいう)」です。 遅延評価とは,与えられた値を必要になるまで評価(計算)しないということです。この性質により,不必要な計算が行われる無駄をなくすことができます。また,「潜在的に無限の大きさを持つデータ構造」といった通常のプログラミング言語では扱いの難しいものを直接扱えるため,より直接的

    第1回 関数型プログラミングの世界へようこそ - 本物のプログラマはHaskellを使う:ITpro
  • Kamiariduki

    JS7 JobScheduler is an open source workload automation solution. JS7 offers cross-platform job execution, managed file transfer, complex no-code job dependencies and a real REST API. JS7 JobScheduler is an open source workload automation solution. It is used to run executable files, shell scripts etc. and database procedures.

  • WiLiKi: All Pages

    WiLiKi, a Wiki engine written in Scheme

    WiLiKi: All Pages
    ysano2005
    ysano2005 2006/07/17
    shelarcyさん