タグ

haskellに関するIwamotoTakashiのブックマーク (51)

  • haskell-jp:128

  • 「変数の初期化」「変数の再代入禁止」 - HaHaHa!

    プログラミング言語のHaskellを説明するとき,説明の相手がCプログラマであれば,その人が知っているであろう概念を使って説明する方がわかりやすい.と考える心情はわからないわけではない. Haskellでは変数の初期化は一度しかできない Haskellでは変数は一度だけ代入(assign)が可能で,再代入(re-assign)して変数の値を初期値から変更することはできない などという説明を見ることがある.この説明はHaskellプログラムのある一面を描写していて,いくつかの前提を明示すれば,まちがいではないように思えるし,許容できる説明だとも思えなくもなかった.しかし,今は寛容の心が持てないジジイになってしまった.Haskellにはアドレス空間あるいは値の記憶場所という概念はなく.代入(assignment)の概念もなければ初期化の概念もない. x = 4200 * 1.05 = は代入(

    「変数の初期化」「変数の再代入禁止」 - HaHaHa!
  • Inemuri nezumi diary(2009-01-08) - _ unsafePerformIO の使用は限定されています。ご利用は計画的に。

    _ unsafePerformIO の使用は限定されています。ご利用は計画的に。 いたるところで、 unsafePerformIO を見かけるようになったのでひとこと言うといたるわ。「Unsafe やって書いてある」やろ。おっと、地が出てしもた。 unsafePeformIO はもともと Haskell の規格 Haskell98 にはありません。初めて現れたのは、 "The Haskell 98 Foreign Function Interface 1.0 An Addendum to the Haskell 98 Report" の 5節 Marshalling についての、5.1 節 Foreign モジュールが提供するインターフェースについてです。 unsafePerformIO :: IO a -> a Return the value resulting from execut

  • 自由に働ける新宿のチャットレディ求人は大学生にもおすすめ

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

  • Inemuri nezumi diary(2009-02-07) - 『まつもとゆきひろが語る「ビューティフルコード」×「プログラマ35歳定年説」を聞いてないんだけど、どんなコードを見せていたのだろうか?』

  • Inemuri nezumi diary(2009-05-03)

    いけがみを召喚するには、出現予定を参考にしてください。三週間前までにメールをくだされば、日程を追加するなどしてスケジュールに組み込むことができるかもしれません。勉強会や個人的な会合、中途採用面接などに応じます。 _ Haskell のまなびかた(2009-05-03版) わたしがはじめて Haskell の処理系を触ったのは 2004 年の春ですから、もうかれこれ 5 年の歳月がたったことになります。はやいものだなあ。当時に比べて書籍もサイトも充実してきたので、学びやすくなったとは思います。 しかし、GHC がデファクトスタンダードになりましたが、GHC の変化が著しいこと、GHC が *nix 以外のプラットフォーム(つまり WindowsMacOSX など)でバグが多いこと、ライブラリが爆発的に増えた一方でその依存性を解決する方法がまだ確立していないことなど、現在でも Haske

  • Haskell の "printf" デバグ - Inemuri nezumi diary(2007-05-11)

    _ Haskell の "printf" デバグ StateモナドとかIORefとか使うプログラムだと、実行時中に中身を覗きたくなる。ある人が unsafePerformIO で print するとか言うので、それはちょっと待てと。Haskell がその手のデバグがしにくいので、他の言語に移るというのは、ちょっとだけ待ってほしい。 Haskell には Debug.Trace というモジュールがあって、その中の trace :: String -> a -> a は、IO を気にせずに文字列を標準エラー出力に出せるのですよ。 import "Debug.Trace" main = trace "Good morning" $ print "Hello, world" zsh% runghc TracingHello.hs 1> out.txt 2> err.txt zsh% cat out

  • fib = 1 : 1 : zipWith (+) fib (tail fib) が遅いかどうかは、使い方に依存する - www.kotha.netの裏

    Haskellでフィボナッチ数を計算するコードとして、次のものが有名だ。 fib :: [Integer] fib = 1 : 1 : zipWith (+) fib (tail fib) これのn番目の要素を取得するコードがO(n^2)よりも遅いということを指摘した記事があった。 Haskellの「fib = 1:1:zipWith (+) fib (tail fib)」はとても遅い - 西尾泰和のはてなダイアリー 実はこの現象は、リストfibを先頭から順番に使っていった場合には起こらない。(!!)などでリストの途中の要素を取得して、その値をいきなり評価した場合に発生する。以下が実証用コード。 {-# OPTIONS_GHC -O3 #-} import System.Environment(getArgs) -- 最初のfib fib :: [Integer] fib = 1:1:zi

    fib = 1 : 1 : zipWith (+) fib (tail fib) が遅いかどうかは、使い方に依存する - www.kotha.netの裏
  • Haskellの「fib = 1:1:zipWith (+) fib (tail fib)」はとても遅い - 西尾泰和のはてなダイアリー

    ラボの昼休みに光成さん、中谷さんとご飯をべながら話した内容を一応ざっくりとまとめておく。 発端はたしか最近Haskellを勉強の光成さんが、Haskellのかっこいいsieveは実はとても遅い(俺は Haskell の sieve についてとんでもない思い違いをしていたようだ...)という話を見て、同様にかっこいいけど遅い下記のフィボナッチ数列の定義の速度を調べてみたら2.5乗くらいのオーダーになっていたという話だったかと思う。 fib = 1:1:zipWith (+) fib (tail fib) 僕も確認するために、コマンドライン引数でNを与えられるフィボナッチ数列のN番目を求めるコードを書いた。 import System fib = 1:1:zipWith (+) fib (tail fib) main = do args <- getArgs print $ (0 *) $

    Haskellの「fib = 1:1:zipWith (+) fib (tail fib)」はとても遅い - 西尾泰和のはてなダイアリー
  • 第39回 一般向けの「Haskell Platform」とインストール・ツールの「cabalコマンド」

    2010年3月22日に,Haskell Platform 2010.1.0.0がリリースされました(参考リンク1,参考リンク2)。 Haskell Platformは,その名の通りHaskellでプログラミングをするユーザー向けの開発プラットフォームです。Haskell Platformには,GHCに加え,GHCには含まれていないライブラリや,cabalコマンド(cabal-install)などのツールが収録されています。 Haskell Platformが生まれた理由 Haskell Platformは,Haskell処理系であるGHCに加え,実際のプログラミングで必要になるライブラリやツールなど,Haskellによるプログラミングを行うのに必要な環境一式を提供するものです。ただし,Haskell Platform 2010.1.0.0のリリース時点では,どのOSを使用しているかによって

    第39回 一般向けの「Haskell Platform」とインストール・ツールの「cabalコマンド」
  • memo - Haskell

    articlehistoryHaskelldifference of 2 revisions.rev.3 2009-06-17 11:24 (28days ago)rev.12 2009-07-15 22:59 (31mins ago)deleted lineadded lineプログラミング言語の1つで、純粋非正格の関数型言語に分類される。「純粋」とは副作用(変数への値の代入)がないことであり、「非正格」とは部分式を先行評価しないこと(遅延評価)を指す。LispやRubyなど一般的な言語のほとんどは純粋でなく、非正格でもない。そのため、Haskellでのプログラミングは、一般的な言語でのそれとはだいぶパラダイムが異なる(論理型言語のPrologに近いのかもしれない)。* モナド演算をつなぐ機能。Maybeモナド、Listモナド、IOモナドなどがある。各モナドは>>=演算子とreturn関

  • Haskellで遊ぶ: Netsphere Laboratories

    (2005.7.18 新規作成, 2009.1 更新。) 関数型プログラミングのための言語 Haskell について。 [2022-09] 処理系が GHC --The Glasgow Haskell Compiler-- だけになってしまってずいぶん経つ。仕様も Haskell 2010 language 以降、纏められなくなってしまった。見通しはあまり明るくない。 Haskell とは (2008.11.7 この節を追加。) 関数型プログラミング 例えばC言語でもオブジェクト指向プログラミングができます (gtk+など) が、プログラミング言語の支援があったほうが自然にプログラミングできます。 Haskell あるいはほかの関数型プログラミング言語 (Clean, O'Caml, Scala, Erlang など)は、関数型プログラミングがしやすいようなプログラミング言語です。程度問題

  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

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

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • もう少し関数の話をしよう (1/3)- @IT

    第3回 もう少し関数の話をしよう 山下 伸夫 株式会社タイムインターメディア 2009/1/14 関数型言語に分類されるHaskell。C言語などの手続き型言語とまったく異なるプログラミングの世界に踏み出してみよう(編集部) 第2回「関数の話をしよう」で関数を導入したときに新しい概念をたくさん紹介した。新しい概念が羅列されていて、少しペースを乱されたと思った方も多かったようだ。 新しい考え方あるいは用語というものは、通常「よく分からない」ものだ。それは、いままでに知らないことだからだし、だからこそ「新しい」考え方なのだから。 というのは筆者の言い訳にすぎない。説明を急ぎ過ぎたし、説明不足だったところもある。前回のおさらいを兼ねて関数についてもう少し説明する。 関数の型 前回定義した関数bmiの型を、もう一度確認してみよう。ghciの:typeコマンドを使えば、式の型を確認できる。まず、gh

  • 関数の話をしよう(1/2)- @IT

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

  • Haskell のお勉強 - 12. 詰碁を解く Haskell プログラム

    12. 詰碁を解く Haskell プログラム 1. 初めに この Haskell 講座の最初の文章 で、Haskell は詰め将棋に向くと書いた手前、詰め物のプログラムを書いてみました。 詰め将棋でも良かったのですが、将棋にはいろいろな種類の駒があり、プログラムが大きくなりそうなので、 ルールが簡単な詰碁にしました。ここで示すやり方は詰め将棋にも使えるので、 気が向いたら挑戦してみてください。 ここに示すプログラムは、コウやセキや長生にならない(つまり、二眼の生きの) 黒先黒生の詰碁を解くことができます。 二眼の黒先黒生に限定したのはこの条件ではプログラムが簡単に書け、実行時間も短くてすむからです。 二眼の生きの場合は勝利条件が定義しやすいのですが、コウやセキや長生は 勝利条件を定義するのは少し面倒です。 また、黒先白死は、白石をとりきるまで読まなければならないので、手数が長くなり、 従

  • d.y.d. DanoMoi と Haskell

    17:24 06/09/27 XP theme 昨日 OSXP というビジュアルスタイルを知りました。 完全にMacOS化してない辺りがかなり好みです。しばらく使ってみよう。 ただ日語のせいかスタートメニュー周りがずれるので、TClockで調整したりユーザーの 表示名をスタイルに合わせて変えたりと適当に酷い合わせ方をしてます。 マジメに直そうよ>自分。 LCSD LCSD '06 (Library-Centric Software Design) のプログラムが出てました。 "ライブラリ" そのものを対象にしてその設計や実装について議論する学会…ということで 特に言語について限定されてはいません。が、実際中身を覗いてみると、 基調講演や Program commitee の面々の名前を見る人が見ればすぐわかるように、 えらく濃いC++使いが集結する感じの学会です。 (や、必ずしも皆が皆C

  • IO in Haskell

    5. 入出力 Haskell は純粋な関数型言語なので入出力のような副作用のある 操作は少しめんどくさくなります。 しかし、このことによって、副作用のある部分を副作用の無い関数から 隔離することが出来ます。 1. do 記法 do ブロックの中の式は順番に実行されます。 IO は、入力 → 計算 → 出力 の順番で実行する 必要があるので do 記法を用いて記述します。 do 記法の代わりに >>= を使うことも出来ます。 この方法は Monad のところで説明します。 do ブロックは通常の関数と異なるのでアクションと呼ばれます。 do ブロックから外部に値を返すには return を用います。 return a とすると外部には IO a が返ります。 (正確な説明は Monad のところでします。) ファイル読み込みなどの入力アクションが返す値は IO a と呼ばれ、 普通の a と

  • モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド

    モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド Version 1.1.0 このチュートリアルは、モナドの概念とその関数プログラミングにおける応用に ついて、初中級の Haskell プログラマにわかりやすく、利用価値があるような 解説をすることを旨としています。読者は Haskell になれていることを前提と しますが、モナドに関する経験は要求していません。このチュートリアルは、多 くの題材をカバーしています。後半のセクションでは、前半の題材をよく理解し ていることを前提とします。順をおって、モナドプログラミングを例示するため のサンプルコードがたくさん用意されています。一読で、すべての題材を吸収し ようというのはお勧めできません。 このチュートリアルは 3 つの部分で構成されています。最初の部分は、 関数プログラミングにおけるモナドの基

  • Haskell の State モナド (1) - 状態を模倣する

    昔、モナドがよくわからなかったので、さまよっていたら、 … ネットで見たMonadの説明で一番私がわかりやすいと思ったのは、Wikibooksの説明。Hello World!がブラックボックスな人は、是非一読を。 (404 Blog Not Found:Haskellで一番難しいのは より) 最初にこの Wikibooksの説明 を読んだのは去年の 11 月頃。そのときの文書のバージョンは  05:13, 27 October 2008 で、今は内容が随分増えている。前の文書は、現在の Haskell/Understanding monads/State に相当するようだ。 ところで、上記の解説を最初読んだとき全く意味がわからなかった。 (@_@;) 「3 Stateful Computations」 では、「ランダムな数字を生成する関数」を例に挙げてモナドの説明がされていたけれど、何が言

    Haskell の State モナド (1) - 状態を模倣する