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.
Haskellというプログラミング言語を知っていますか? 全く聞いたことがないという人が多いかもしれません。そういう名前の言語があるのは知っているけど,どんな言語かは知らないという人もいるかもしれませんね。でも最近では,一部の先進的なソフトウエア開発者の間で,一種のブームと言えるほど熱狂的に受け入れられています。 なぜならば,Haskellは様々な優れた特徴を持っているからです。最初に,他の言語にはあまり見られない際だった特長を一つだけ紹介してみましょう。「遅延評価(lazy evaluation,怠惰評価ともいう)」です。 遅延評価とは,与えられた値を必要になるまで評価(計算)しないということです。この性質により,不必要な計算が行われる無駄をなくすことができます。また,「潜在的に無限の大きさを持つデータ構造」といった通常のプログラミング言語では扱いの難しいものを直接扱えるため,より直接的
ついに、Intel MacでHaskellプログラミングができる環境が手に入りました。 今まで、GHCが正式にIntel Macに対応していないこともあって、MacBook ProでHaskellプログラミングを楽しむのを諦めていました。一応、Dan Kogaiさんのblogで説明されていた、GHCをIntel Macで動作させるトリックを以前試してみたのですが、なぜか僕の環境ではうまくいきませんでした。 404 Blog Not Found:haskell - GHC on Intel Mac それで、あれから進展がないかどうか調べていると、良いものが見つかりました。 X86OSXGhc - GHC - Trac このページにあるAudreyTangさんによる改良版GHCをインストールすると、Intel Macで無事にGHCが使えるようになりました! 以下のコマンドで一瞬でインストールで
saw that too, interesting, although i often consider it a danger sign when developers rewrite existing code just to employ a different language, particularly when they already employ a language (ocaml) that can deliver on many of the same promises of haskell. also audrey, please report on your experience with ubuntu on the mac core duo unit when you get a chance. i am using ubuntu on an older powe
気まぐれと偶然となりゆきで、ここ2,3回はモナドを話題にしました。googleで「モナド」を引いてザッと眺めると、「モナドはむずかしいー」とか「モナドで挫折した」みたいな雰囲気が感じられて、説明芸人の血が少し騒ぎましたね。「なら、予備知識ゼロでモナドの説明をしてやろうじゃねーか」と。 タイトルはだいぶ煽っちゃった…… けど、ハッタリじゃないつもり…… けど、実際はどうかな? ※印刷のときはサイドバーが消えます。 内容: とりあえず、あたりさわりなくモナドの来歴を紹介する こんな課題を考えてみよう:副作用付き計算 カウントアップする関数達 カウントアップしたい意志を戻り値で伝える それでは、いったい誰がカウントアップをするのだ 関数の引数の型をCountup型にまで拡張する そして、これがモナドだ とりあえず、あたりさわりなくモナドの来歴を紹介する 今からここで説明する「モナド(monad)
Readerモナドで定義されているlocal関数とasks関数の実験をしてみた。 local関数とasks関数を使うと、環境(データを記憶する領域のようなもの)を局所的に操作できることがわかった。 これらの関数をうまく利用すれば、プログラミング言語でおなじみの「スコープ」の概念を綺麗に表現できるようになると思われる。 Haskellでインタプリタを実装したい開発者にとっては嬉しい話に違いない。 コードは以下の通り。ReaderTでReaderモナドとIOモナドをレイヤー化している(多分)。こうしておけば、liftIO関数とputStr関数を組み合わせて、IOも同時にできてしまうようだ。(実はまだあんまりよくわかっていない) つまり、昔ながらのprintデバッグが可能になる。 % vim reader.hs import Control.Monad.Reader data Env = Env
あるところに同じようなことを(ほとんど成り行きで)書いたのですが、重要な問題のような気がしてきたので、こっちにも書いてみる。 一般に、関数型言語やプログラミング言語(および計算機科学、ないし任意の専門)についての情報は、 一般書・一般誌、Webやメーリングリストやブログ 教科書・専門書 論文 口頭での議論(学会発表や質疑応答、グループのミーティング、部屋での会話) などで交換されます。 で、一般に情報の「ディープさ」は上から下へ行くほど濃くなると思うのです(少なくとも僕の専門分野ではそう)。そのごく一部である1.だけ(しかも日本語onlyで)「勉強」していろいろと議論するのは、(何もしないよりは良いのかもしれませんが)非常に危険です。その危険をちゃんと意識していればno problemですが。「高速道路」の話と同じことかも。 たとえば、日本のネット(?)では今になって妙に持ち上げられている
NEW: Perl 6 'Diwali' 6.d Language Specification Released! The Perl 6 Programming Language Hi, my name is Camelia. I'm the spokesbug for Perl 6, the plucky little sister of Perl 5. Like her world-famous big sister, Perl 6 intends to carry forward the high ideals of the Perl community. Perl 6 is currently being developed by a team of dedicated and enthusiastic volunteers. You can help too. The only
YAPC::Asia 2006 Tokyoの2日目の午後からAudrey Tangさんの「Learning Haskell」のプレゼンテーションがありました。 はてなから音声ファイルが公開されています。スライドも見られるようになりました。ありがとうございます。 Learning Haskell by Audrey Tang 話の内容が高度なだけに、理解するのが中々難しいです。予めHaskellの予習をしておいたので、前半は何を伝えようとされていたのかおおよそわかりました。 個人的には、後半の Monad Transformers QuickCheck Parsec Software Transactional Memory Foreign Function Interface の話題が興味深かったです。断片的ですが、今後のヒントが得られたような気がします。 間違いはあると思いますが、何かの
http://i.loveruby.net/w/href.html 入門HaskellやYAPC::Asia の Audrey のセッション、Learning Haskellで LL 界隈でも熱くなり始めた Haskell。かくいう自分も少しづつ勉強中です。 で、最初勉強するのに必至なドキュメントの一つがリファレンスマニュアルです。href はコマンドラインから日本語のリファレンスを引くことができる便利ツール。用例も載ってるのもありがたいですね。使用方法は簡単( ReFe と同じ )で href コマンドの引数に調べたい関数を書いて実行するだけ! $ href reverse Data.List.reverse reverse :: [a] -> [a] PRELUDE reverse xs リスト xs を逆順にしたリストを返す。 reverse [1,2,3] = [3,2,1] re
Pugsの勉強をしようと考えている方は、以下のリソースを読むと面白いかもしれません。 Harrothチュートリアル ソースコード Harrothチュートリアルでは、Forthというプログラミング言語のパーサをHaskellで実装しながら、パーサについての理解が深められるように書かれています。しかし残念な点が2点あります。第一に、説明で出てくるコードと実際のソースコードに若干の違いがあり、読者の理解を妨げていることです。*1第二に、パーサの核になる部分のコードが欠落していることです。よく書けているチュートリアルなだけに、本当に残念でした。 あと少しのピースがあれば、完成しそうだったので、代わりにそのピースを作ってみました。何回も試行錯誤してパーサが完成した時は、本当に感動しました。 そのパーサのコードは以下の通りです。 % vim MyForth.hs {- MyForth - An Imp
前のエントリで、Haskellで実装したミニコンパイラを紹介しました。今回はこのミニコンパイラの字句解析のパーツだけを取り出して動かしてみます。必要最小限なコードを切り出して動作させてみたかったので、今回対応する計算式は「自然数の足し算」のみです。ミニコンパイラから、そのような興味のあるコードだけを抜き出してみると、以下のようになりました。 % vim calc.hs import Char data Token = NUM Int | PLUS instance Show Token where showsPrec p (NUM num) = showString "NUM " . shows num showsPrec p (PLUS) = showString "PLUS" tokenise :: [Char] -> [Token] tokenise [] = [] tokenise
Haskellで実装された勉強用のコンパイラがないか探していたらありました。Haskellでコンパイラを書きたいと思っている方や、Pugsの実装に興味のある方は、今回紹介するミニコンパイラに興味を持ってもらえると思います。 Simple compiler example このコンパイラは、計算式を架空のスタックマシンのコードに変換するというものです。私たちが普段使っているPentiumマシンに搭載されているFPUもスタックマシンの一種ですね。(参考) 例えば、「1+2-3」をこの架空のスタックマシンのコードに変換すると、以下のようなコードに変換されます。 PushConst 1 PushConst 2 PushConst 3 SubToS AddToSでは、ソースをゲットして、ghciで実際に試してみましょう。 % wget http://www.doc.ic.ac.uk/~phjk/Co
Haskellの勉強をはじめて1ヶ月ほど経ちました(実際勉強したのは1週間くらいです)。途中までは順調でしたが、モナドがやっぱり難しい。mapとかfilterのような高階関数は割とすんなり理解できたのですが。。 今日は久しぶりにHaskellをさわってみました。再帰とちょっとしたI/Oをするプログラムを作ってみました。 import System -- getArgs crazy :: String -> IO () crazy s = putStr s >> crazy s main = do [arg] <- getArgs crazy argコンパイルと実行は以下のようにします。(コンパイルにはGlasgow Haskell Compilerを使っています) 実行すると、プログラムの引数に渡した文字列(foo)が標準出力に繰り返し出力されます。終了条件が書かれていないので、ずっと出力
■内容紹介 「実際にHaskellを利用し、プログラムを組む。」 他のプログラミング言語にも多大な影響をあたえる関数型言語。 本書では純粋関数型と言われるプログラミング言語Haskell(ハスケル)について、「宣言的」とはどういうことか、またパターンマッチング、再帰的定義、モナド、静的な型付け、型クラスとインスタンス宣言などの重要な概念について、プログラムを組んでいきながら、実践的な解説を試みます。 Haskellは、それをモノにした悟り体験のために勉強をしましょう。この体験は、その後のよりよいプログラマー人生での手助けとなるはずです。 Happy Hacking with Haskell! 表紙の鳥:ケリ(チドリ目チドリ科) ●本の中身を見てみる
with cabal: cabal install darcs with stack: stack install darcs Darcs binaries for many platforms (not up to date though) current release source tarball Darcs is a free and open source, cross-platform version control system, like git, mercurial or svn but with a very different approach: focus on changes rather than snapshots. Darcs offers a freer way of working, and a simpler user interface. Darcs
「連載: Haskellプログラミング」のプログラム $Date: 2006/06/09 15:06:12 $ 記事は情報処理学会のページ http://www.ipsj.or.jp/magazine/promenade.html で見ることができます.
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く