[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

programmingに関するaslaのブックマーク (201)

  • Partial Function Considered Harmful - 純粋関数空間

    この記事は、Haskell Advent Calendar 2011 25日目の記事として書かれました。 概要 Haskell、あるいはその他のプログラミング言語では 「部分関数(Partial Function)」 と呼ばれるものが標準ライブラリに存在したり、 定義したりすることができます。 今回はそれらが有害であるという考えと、 代替の紹介をしようと思います。 部分関数とは 部分関数(Partial Function)とは、 集合の言葉で言うと、 定義域(domain)の要素に対して、値域(range)の値が高々1つ対応付けられる ような対応付けのことです。 Haskellでは 「結果の値が引数によっては定義されないことがあり得る」 関数だと言えます。 例えば、整数の割り算を行う関数 div :: (Int, Int) -> Int は、 (1, 0) に対しては定義されません。 Ha

    asla
    asla 2013/02/14
    Haskell で型チェックを活用する方法
  • Haskell でのデバッグ - あどけない話

    「純粋関数型言語はデバッグしにくい。だって純粋な関数で printf デバッグできないから」とつぶやいている人をよく見かけます。これまで放置してきましたが、リツイートが50を超えたので、Haskellでのデバッグについて書きます。 例外処理と同じように、Haskell でのデバッグでは、純粋な関数と IO を分けて考える必要あります。 IO での printf デバッグ IO では、putStrLn や print が使えるから問題ないですよね? foo :: Int -> IO Bool foo i = do x <- あれして i putStrLn $ "x = " ++ show x これして putStrLn "ここも通過" -- それもする y <- それもする print y return y ちなみに、forkIO 起動した軽量スレッドから putStrLn する場合、軽量ス

    Haskell でのデバッグ - あどけない話
  • 関数型言語を採用するプロジェクトが増加、果たして本当に開発効率は高いのか? | スラド デベロッパー

    ソフトウェア開発に Scala や Haskell、Erlang といった関数型言語を採用する企業が増えているそうだ (ITpro の記事より) 。 関数型プログラミング言語には「迅速に開発できる、バグを抑えやすい、アプリケーションの性能を向上させやすい」といった特徴があるとし、これらは新規のサービス開発に向いているという。「言語選定が競争力に直結」といった意見も記事には掲載されている。 これだけだといいことずくめのようにも聞こえるが、関数型言語は習得しにくく、ライブラリなども C/C++Java と比べるとまだ少ない。使いこなせるプログラマも少なく、関数型言語で大規模システムの設計を行えるエンジニアはまだ少ないのではないだろうか。関数型言語を使える人材はある程度スキルの高い人であり、そのために生産性が高いのではという疑問もある。今後日で関数型言語の採用は進んでいくのだろうか?

  • Rubyによる関数型プログラミング

    古き良き小学校の時代、この行には困惑させられたものだった。 魔術的な x が、加算されたのに等しいままでいる事に。 どういうわけか、プログラミングを始めると、それに構わなくなる。 「やれやれ、それは重大な事柄じゃないし、プログラミングとは現実のビジネス行為なんだから、 数学的な純粋さについてあら探しなんて必要無い (その議論なら、大学にいる狂った髭面野郎どもにさせておけばいい)」と思っていた。 けれども、ただ知らなかっただけで、我々が間違っていて高い代償を支払っていたのは 明らかである。 Wikipedia によれば、「関数型プログラミング(functional programming, FP)とは、 計算を数学的な関数の評価とみなし、 状態や可変データを避けるプログラミングパラダイム」である。 言い換えると、関数型プログラミングは、 副作用が無く変数の値を変化させないコードを推奨する。

  • Mizon Dev Diary | 2012-12

    asla
    asla 2013/01/30
    haskell で実装したブログ
  • Haskell での例外処理 - あどけない話

    リツイート数が30を超えたので、Haskell での例外処理について説明します。僕が思うに、Haskell での例外処理が分かりにくいのには、2つ理由があります。 ライブラリの混乱 パラダイムの違い 歴史的経緯により、Prelude にも Control.OldException にも Control.Exception にも catch があります。歴史的経緯を説明するのは面倒なので、これだけ覚えて下さい。「Control.Exception だけを使って、それ以外は忘れる」 そもそも純粋関数型で catch とか言われても分からないかもしれません。Haskell では、純粋な関数と IO とでは、例外処理の方法が異なります。命令的な catch などを使うのは IO です。純粋な関数には Maybe か、Either を使います。 純粋な関数 純粋な関数では、原則として例外を投げてはい

    Haskell での例外処理 - あどけない話
  • Haskell の read 関数で、文字列から代数的データ型へ変換 - 導出インスタンスを使って

    1. 文字列から代数的データ型へ変換したい Haskell の print 関数で日語を出力するために、以下のコードを参考にした。 どう書く?org 6616 nobsun: Item型を定義して、これをReadクラ...(設定ファイルから値を取得) 上記には、 「文字列から、代数的データ型へ変換するための、Read クラスの導出インスタンスの使い方」 についても、わかりやすく書かれていた。忘れないうちに、練習しておこう。o(^^)o 2. Show クラスの使い方はわかってきた ところで、Read の反対 Show クラスについては、少しわかるようになった。 フィールドに型変数を含んだ型の print 代数的データ型の値を print で出力には しかし、Read についてはチンプカンプンだった。 (+_+) 3. Read クラスについて 文字列を、特定の型へ変換する例を、最初に書い

    Haskell の read 関数で、文字列から代数的データ型へ変換 - 導出インスタンスを使って
  • 例題で比較する状態系のモナド - あどけない話

    金曜日に状態系のモナドを説明しないといけないので、例題を書いて比較できるようにしておきます。 呪文として、以下のモジュールを読み込んでおきましょう。 import Data.Char import Control.Monad.Identity import Control.Monad.Reader import Control.Monad.Writer import Control.Monad.State Identityモナド 入力が一つで、出力が一つのモナド。面白みはない。 i :: Identity Int i = do x <- return 2 y <- return 3 return $ x * y でも、モナドは Haskell の中に住むマイクロ言語で、このマイクロ言語でマイクロプログラムを作成した後は、run で実行するものだというイメージは分かるかも。 > runIde

    例題で比較する状態系のモナド - あどけない話
  • Haskellの単体テスト最前線 - あどけない話

    この記事の最新版は、githubで管理されています。 これはHaskell Advent Calendar 2012の5日目の記事です。 Haskellで作成したパッケージに対して、単体テストを書くための最新情報をお届けします。 要約 要点は4つです。 利用者に見せたい振る舞いは、doctest で書く 利用者に見せたくない振る舞いは、hspec で書く テストを自動化するフレームワークとしては Cabal を使う doctest でも hspec でも、純粋なコードに対しては、できるだけ QuickCheck などの性質テストを書く この記事で一番伝えたいのは、3) です。例題としては、Base64 という符号化を取り上げます。Base64 は知っていると仮定して話を進めますので、知らない人はあらかじめ Wikipedia の Base64 の説明でも読んで下さい。 この記事で利用するコ

    Haskellの単体テスト最前線 - あどけない話
  • なぜConduitなのか? - あどけない話

    Iteratee という概念は、Haskell 界に適切な資源管理と合成可能な IO をもたらした。そして、以下の3つのパッケージが乱立することになった。 iteraee enumerator iterIO 昨年の ICFP の際、Iteratee の生みの親である Oleg さんに「この状況をどう思っているのか」と聞いてみた。曰く「とてもよい状況です。いくつかの実装が現れ実際に使われることで、当に必要な機能が分かるでしょう」。 もしかすると、Conduit によって彼の願いがもう実現されたのかもしれない。 Iteratee には何が足らなかったのか? 以下は、enumerator の使用経験基づく考察だが、たぶん Iteratee 全体に言えると思う。 Iteratee で資源を割り当てられない Michael Snoyman さんの不満 例外処理が大変 liftIO と catch

    なぜConduitなのか? - あどけない話
    asla
    asla 2013/01/25
    Haskell の 新しい IO の話
  • ConduitとHaskellでネットワークプロキシサーバを作る - 純粋関数空間

    この記事は http://www.yesodweb.com/blog/2012/06/conduit-0-5 の翻訳です。 conduit-0.5 をリリースしました。 conduitはストリームデータを扱うためのライブラリです。 conduitを用いると、様々な形のデータを生成、変形、消費するような処理を、 簡単に組み合わせることができるようになります。 enumerator/iterateeパラダイムと同じ問題を解決することを目的に作られましたが、 アプローチはこれらのものとは異なります。 conduitは簡単に理解して利用できるものになることを一番の目的としています。 遅延I/Oとは異なり、リソースの即時開放を保証し、 また、純粋なコードに例外を持ち込みません。 今回のリリースでSource、Sink、Conduitのそれぞれを作るための、 シンプルで効率の良い、高レベルのインターフ

  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
    asla
    asla 2013/01/25
    XML と Haskell
  • Data Structures

    10. 種々のデータ構造 この文章では、大きいデータを Haskell で扱うほう方法について述べます。 Array, FiniteMap, IORef, Array.IO, HashTable を紹介します。 1. リストが関数型言語のデータとして用いられている理由 関数型言語でリストが多く用いられているのは、リストは Cons する分には、データを全て作り直す必要がなく、 Cons した分を付け足してそこのポインターを新しいリストとみなせるからです。 例えば、[1,2,3] というリスト図1のような構造体(コンスセル)の列への最初のポインターとして実装できます。 これに、0 を Cons すると 0 のコンスセルを先頭に付け足すだけで新しいリスト [0,1,2,3] が生成したと して取り扱うことが出来ます。 つまり、コンスセルの先頭へのポインターをリストとすると、新しいリストが少ない

    asla
    asla 2013/01/23
    Haskellのデータ構造
  • Haskellでレイトレーシング(第2回)〜ループは使わない

    asla
    asla 2013/01/23
    Haskell と LISP と ループ
  • ループあれこれ | tnomuraのブログ

    Haskell のループについてまとめてあるサイトはないかと探したが、見つからない。Googl English にして 'Haskell loop howto' で検索してみたが、統一的にまとめたサイトは見つからなかった。Haskeller はループは使わないのだろうか? 取り敢えず、みつかったところから、ループのやり方を抜き出してみた。 階層的なループを内包的定義でやるやり方。 [ (i, j) | i <- [1..10], j <- [1..10]] [ (i, j) | i <- [1..10], j <- [1..i] ] リストモナドを使うやり方。 do i <- [0 .. 999] j <- [0 .. 999] return (foo i j) Control.Applicable を使うやり方。(よく分からなかったのでコピペだけ。) module Main where

    ループあれこれ | tnomuraのブログ
    asla
    asla 2013/01/23
    Haskell と ループ
  • 「プログラミング」はprogrammingか、programingか

    初出 「あまもよう」2008-08-13、2008-08-15 programing? PLAYING THE PIANO /05を観ていたら、スタッフロールにPrograming  Narutaka Itoと出ていたんですが。 pro・gram・ming 2. the planning of which television or radio programmes to broadcast politically balanced programming programmeはイギリス英語アメリカ英語ではprogramと綴るが、その場合も-ingを付けると「programming」となる筈。 programing - Google 検索 programing に一致する英語のページ 約 3,320,000 件 programming - Google 検索 programming に一致

  • HackerIncubator - オープンソースマガジン連載「ハッカー養成塾」リンク集

    HackerIncubator - オープンソースマガジン連載「ハッカー養成塾」リンク集 目次 ウェブで公開されている原稿 執筆者、タイトル一覧 オープンソースマガジン連載「ハッカー養成塾」リンク集 オープンソースマガジン(http://www.unixuser.jp/)に連載されている「ハッカー養成塾」でウェブに公開されているものを集めてみた(抜けがあったら加えてください)。 ウェブで公開されている原稿 武藤健志(2006年1月号) http://kmuto.jp/debian/article/osm200601.html 後藤正徳(2006年2月号) http://gotom.jp/~gotom/pub/2005-12-OpenSourceMagazine/gotom.html 高林哲(2006年3月号) http://0xcc.net/pub/osm2006/ 鵜飼文敏(2006年3

  • ひげぽん OSとか作っちゃうかMona- - ハッカー養成塾:ハッカーへの遠回り

    オープンソースマガジン2007年1月号に向けて書いた記事の元の原稿です。 前回のアルファギーク舘野君から、バトンを渡されたひげぽんです。 Mona OSというオープンソースOSを開発しています。 僕はハッカーと呼ばれるには実力不足ですが、知り合いのスゴ腕ハッカーに少しでも追いつこうと日々実践していることをいくつか紹介します。 ハッカーに学ぶ オンラインでもオフラインでも構いません、自分よりも優れているハッカーを探してお手とすることから始めましょう。 彼(または彼女)が何を勉強し、発言し、考えているかを観察することで多くのことを学べるはずです。 周りにハッカーがいなければ、勉強会・カンファレンスに参加したり、ブログを利用してコミュニケーションをとるのもひとつの方法です。 「ハッカーに交わればハッカーになる」とまではうまくいきませんが、周りは自分より優秀な人ばかりであるという環境を作り上げる

    ひげぽん OSとか作っちゃうかMona- - ハッカー養成塾:ハッカーへの遠回り
  • サービス終了のお知らせ - NAVER まとめ

    サービス終了のお知らせ NAVERまとめは2020年9月30日をもちましてサービス終了いたしました。 約11年間、NAVERまとめをご利用・ご愛顧いただき誠にありがとうございました。

    サービス終了のお知らせ - NAVER まとめ
  • The Typeclassopediaを訳しました, The Typeclassopedia - #3(2009-10-20)

    ■ [Haskell] The Typeclassopediaを訳しました The Monad.ReaderのIssue 13に掲載されたThe Typeclassopediaという記事が、Functor, Monad, Monoid, Applicative, Foldable, Traversable, Arrowといったような型クラスについて良くまとまっていて、そのあたりを知りたい時の取っ掛かりになりそうだったので翻訳してみました。 作者のBrent Yorgeyさんからも許可がいただけたので公開します。翻訳に慣れていないので変な日語(特に専門用語の日語訳はかなり怪しい)があったり、そもそも間違っていたりするかもしれませんので、何か見つけたらコメントを頂けると助かります。 ■ [Haskell] The Typeclassopedia by Brent Yorgey <first

    asla
    asla 2013/01/21
    Haskell の型に関しての素晴らしい記述。