You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
IntroductionI am currently working on, and using, an Emacs package called haskell-emacs. It is intended as an eventual general replacement for haskell-mode1. It won’t be released officially for a while. I will describe my motivations and development process, the current features (with screenshots!) of this package, and the features intended for the future. Development ProcessThe reason for creatin
関数型言語での関数について、Haskell を用いて説明します。 関数の型 関数の型は、-> を使って書きます。例えば、Int を Char に変換する chr という関数の型は、以下のようになります。 chr :: Int -> Char 一引数の関数の型は、まぁこんなもんだと思えるでしょう。びっくりするのは、引数が増えたときです。たとえば、replicate という関数の型を見てみましょう。 replicate :: Int -> a -> [a] replicate は、第二引数で指定されたデータを第ー引数に指定された個数分用意して、リストにして返す関数です。([] は配列ではなく、リストです。) 次のように動きます。 > replicate 3 "foo" → ["foo","foo","foo"] a は型変数といって、任意の型を取れます。なじめない人は、具体的な型を当てはめてみ
Enumerator Package - Yet Another Iteratee Tutorialは、Iteratee: 列挙ベースのI/Oよりは分かりやすいのですが、やっぱりよく分かりません。なぜなら、僕は使い方を知りたいのに、作り方が書いてあるからです。そこで、Enumerator ライブラリの使い方を簡単に紹介します。 登場人物 Iteratee 入力をもらって計算をします run_ で実行します IO モナドが指定されていれば、副作用を起こせます オートマトンと考えると分かりやすいです Iteratee 同士は (>>=) で合成できます Iteratee >>= Iteratee → Iteratee Enumerator Iteratee と ($$) で合成することにより、新たな Iteratee になります Enumerator $$ Iteratee → Iterate
_ GHC interactive debugger GHCi を補強する GOA package IRC上のHaskell対話bot:Lambdabot をローカルに端末の上で動かし、GHCiと対話するパッケージ GOA というものがあります。 が、GOA は cabal ではすんなりはいらないんですよね。手元にちいさなミスを修正したものを作っていたのですが、今日もらった機会に Github で公開しました。 lambdabot は導入に困らないと思うので(困るのでしたら連絡を)、lambdabot をインストールした後で、GOA も試してみてはいかがでしょうか。 % git clone git://github.com/IKEGAMIDaisuke/goa で、ソースが手に入ります。build やインストールのしかたは README をお読みください。できることの一例を下に示します:
module Z where import Data.Char data Foo = Alpha | Beta | Gamma | Delta | Eta | ... | Omega deriving (Show,Eq,Enum,Bounded) parse internals x = head $ (if all isLower $ take 1 x then [External i | i <- [minBound..maxBound], map toLower (show i) == map toLower x] ++ [Internal y | y <- internals, map toLower y == map toLower x]) else []) ++ [MakeIt x] data Lib = External Foo | Internal String | Make
なんだか四月以降文章を書く気分になかなかなれなくて、 二年ほど前、このブログの開始当初の目標だった ひたすらテクニカルアーティクルを載せるページを作るというのは もうすでにかなり頓挫している風ではありますが、 リハビリのために無理に書くことを見つけてでも なにやら書いてみることにします。 ところで、先月の末から一月ほど京都に帰っていたのですが、 京都は死ぬほど暑かったですね。 盆地で暑いと言われつつも、 やはり離れてはじめて分かるというものです。 (私はあんまり広く情報収集したりしないので、 ここに書く内容はとうによく知られた問題なのかもしれないが、あしからず…) プログラムの実行において、何らかの外部的な情報 (つまりIOを介して得られる情報)を そのプログラム全体から参照したいケースというのがある。 典型的な例がプログラムのコンフィギュレーションで、 たとえば、設定ファイルから設定値を
17:24 06/09/27 XP theme 昨日 OSXP というビジュアルスタイルを知りました。 完全にMacOS化してない辺りがかなり好みです。しばらく使ってみよう。 ただ日本語のせいかスタートメニュー周りがずれるので、TClockで調整したりユーザーの 表示名をスタイルに合わせて変えたりと適当に酷い合わせ方をしてます。 マジメに直そうよ>自分。 LCSD LCSD '06 (Library-Centric Software Design) のプログラムが出てました。 "ライブラリ" そのものを対象にしてその設計や実装について議論する学会…ということで 特に言語について限定されてはいません。が、実際中身を覗いてみると、 基調講演や Program commitee の面々の名前を見る人が見ればすぐわかるように、 えらく濃いC++使いが集結する感じの学会です。 (や、必ずしも皆が皆C
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
今回は「モナド(monad)」について説明します。モナドはHaskellの重要な特徴の一つなので,名前くらいは聞いたことがある人が多いでしょう。ただ,「モナドは難しい」という声もよく聞きます。 モナドとは一体なんでしょうか。前回,「HaskellはIOを取り扱うためにモナドと呼ばれる特別な仕組みを使用することで有名です」と書きました。Haskellは遅延評価を行うため,プログラマが処理の順番を確実に指定することができず,そのままでは入出力の処理には不向きです。モナドを使えば制御構造を導入できるため,この問題を解決できます。前回でいえば,(IO a -> IO a)にマッチする関数――finallyやprintThenAdd――を定義している部分がモナドに相当します。また,GHCiのプロンプトにもモナドが使われています。このように入出力操作を行うモナドの代表格が「IOモナド」です。ライブラリ
JavaScript is disabled on your browser. Please enable JavaScript to use correctly mesosadmin frontend Please login Login Password Forgot your personal password ? We can remind you
あと、やはりネットワーク周りなどI/Oの多いプログラムの書きにくさが課題になっている印象。関数的なI/OはFRPで解決できそうな気がするんだけど調べてない。そろそろFRPをちゃんと理解したいなー。 Parsec 3活用事例: Keepalived構文チェッカ - maoeのブログ なんて書いてから早1ヶ月半、ようやくFRPが掴めてきたのでわかったことをまとめてみます。 Reactive programmingって何? FRPの前に、一般的にwikipedia:en:Reactive programmingと呼ばれるパラダイムについて触れておきます。reactive programmingとは疑似言語を使ってかなーり大雑把に説明すると、 var a = 1 var b = a + 1 a = 10 // aを書き換える print b // => 11print bの出力は2ではなく11です
Ebnf2ps generates nice looking syntax diagrams in EPS and FIG format from EBNF specifications and from yacc, bison, and Happy input grammars. The diagrams can be immediatedly included in TeX/LaTeX documents and in texts created with other popular document preparation systems. Ebnf2ps is written in Haskell98, a lazy functional programming language. NEW 20100629: compiles with GHC 6.10.3 README file
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く