-
[SPOJ]ARMY
route150 09/16 15:51:18
簡単なのかムズイのかよくわかんね...
-
[アルゴリズム][ライブラリ]演習(ダイクストラ(Data.Graph.Inductive))
route150 05/21 23:38:23
Data.Graphを使ってみる... 慣れないから、すごい難しい。とりあえず、コストが1の迷路を無理やりダイクストラで。コスト固定ならグラフに変換するだけで、後はライブラリがやってくれる。ライブラリのダイクストラはヒープつかった奴なので速い...かも... 2次元迷路の変換は1回書けば、あとコピペでいいから楽。あと、確実にデータがグラフに変換できていれば答えは出るから、アルゴリズムの確認をしなくていい点もグッド... 因みにA*も(他の)ライブラリにある... GHCiで相当複雑な迷路 ...
-
会社のプログラミングコンテスト
matarillo 03/07 03:27:28
10年ぐらい前の問題をHaskellで解いてみた。 問題は、「8×8ますの正方形のパネルを同じ形に2分割する分け方はいくつあるか」というもの。 ↓のコードは回転同型は考慮しているが鏡像同型は考慮してない。でもすっきりと書けたんじゃないかな。 (追記)Node型を修正。 [http://ideone.com/0gFNU:title=ideone.comでの実行結果。]
-
第9章 対話プログラム #1
matarillo 09/08 09:37:27
仕事が忙しくて書けてなかったけど、忘れたわけではない。 入出力の型 IO aの簡易説明、っていうかこのWorldを使った説明はごまかしだよなあ。 写経したコードを試しに実行する時に困るんだよねえ。 カリー化によって(最近、ScalaやGroovy界隈で話題だったね)、引数をとるIO型を定義しなくても、a -> IO bで充分というのは納得。 基本アクション getCharとputCharを例にとったreturnの説明。 第8章でもreturnは出てきたけど、そこではオレオレreturnだったし、副 ...
-
because type variable `s' would escape its scope
suztomo 02/06 00:15:51
Yesod.Auth.OAuthをいじくってGoogle PlusのOAuth2.0を使ってみようとしたら謎なエラーめっせーじ。
-
getCh
matarillo 01/24 12:25:13
9.6の計算機プログラムの中でgetChという関数が出てきていて、コンパイルに通らないのでgetCharに置き換えてたんだけど、 Page 90. The action getCh is no longer provided as a primitive in Hugs, but can be defined in Haskell as follows: This definition works with the Glasgow Haskell Compiler, but may not work w ...
-
Haskell学習の目標
matarillo 04/30 17:10:12
とりあえずの目標は、[http://d.hatena.ne.jp/rst76/20100706/1278430517:title]を全部理解できるようになること。 今日、UnitとBindはモナドに関係しているということを知った。 [http://blogs.msdn.com/b/wesdyer/archive/2008/01/11/the-marvels-of-monads.aspx:title] 教科書(プログラミングHaskell)はまだぜんぜん最初のほうで、モナドが出てくるのはまだ先の話だけ ...
-
YesodからWarpが呼ばれるまで
suztomo 11/14 22:30:22
[http://hackage.haskell.org/packages/archive/yesod-core/0.9.3.2/doc/html/Yesod-Dispatch.html#v:toWaiApp:title=Yesod Dispatch toWaiApp]より でwarpにYesodを乗せるコードはこれ [http://hackage.haskell.org/packages/archive/yesod/0.9.3/doc/html/src/Yesod.html#warp:title=Y ...
-
[Haskell][TH][QuasiQuotes] 準クォートでもてかわゆるふわメタプログラミング!
mr_konn 12/10 00:00:00
(この記事は [http://atnd.org/events/10631:title=Haskell Advent Calendar jp 2010] 参加記事です。) 皆さん、パーサ、書いてますか?……書いてる。それはよかった。では皆さん、Template Haskell、使ってますか?……使っている。それは素晴しい! それでは皆さん、準クォート、使ってますか?……え?使っていない!?それは実に勿体ない! パーサ書いてて Template Haskell も使っているのに準クォートを使わないのは、えー ...
-
[wxHaskell] 画像の表示サンプル
eagletmt 08/19 21:36:47
[http://haskell.org/haskellwiki/WxHaskell:title] を使って Haskell でも GUI なプログラムを書いてみる. インストール方法はリンク先を参照. とりあえずカレントディレクトリにある foo.jpg を開いて表示するだけのサンプルを書いた. 参考 bitmapCreateFromFile: http://wxhaskell.sourceforge.net/doc/Graphics-UI-WX-Media.html#v%3AbitmapCrea ...
-
WarpでWebSocket
suztomo 11/07 23:27:44
[https://github.com/yesodweb/wai/tree/master/wai-websockets:title=wai-websockets]サンプルを動かしただけです。でもWebSocketは感動をもたらします。 わかりますその気持ち
-
[メモ]ハノイの塔(2)
route150 11/16 22:26:49
なんか数値列がグレイコードというのに対応するらしい。グレイコード使った解法をやろうとしたけど、どう考えても再帰するよりメンドウなのでやめた...orz つか、ハノイの塔ってHaskell的には合成関数で表せるよね...ってことでやろうとしたけど、型の勉強をサボっていたせいかよくわかんない。理想的には、Control.Categoryのインスタンスにして、 こんな感じで、2^n-1個の関数の合成になるはずだが、よくわからなくなったのでやめた(Haskellでは普通に2^n-1の計算をすれば普 ...
-
第3章 型とクラス #1
matarillo 04/30 03:06:44
さて、そろそろHaskellらしいところに入ってきたかな。 型を示すには、式 :: 型 と書く。 なんだか、いきなり前振りなしで「評価されていない式」って言葉が出てきた。Haskellの遅延評価のことを言っているのかもしれないが、唐突すぎるだろ。この本のこういう所は嫌だな。 Hugsの:typeコマンドを学んだ! Hugsの:loadコマンドが、プログラム中ではimportと同じということを学んだ! Bool型 真偽値。TrueとFalse。 Char型 文字。シングルクォート。 String型 ...
-
モナド則を満たすべき理由
nobsun 09/28 00:00:00
[http://d.hatena.ne.jp/kazu-yamamoto/20080927/1222517466:title=モナド則ふたたび]に対してコメントしたのですが、うっかりして、コード部分のインデントが崩れてしまったのでここに再掲 型の上では「整合性」が取れているので、「整合性」が取れない例というのは示しにくそうです。 モナド則が「あたり前だ」と感じるということは、モナド則が満たされることを暗黙に期待しているということですよね。つまり、モナド則が満されないないことがあれば、そんなのは役に立 ...
-
[重要]GHCのライセンス
route150 05/17 04:00:43
たまにソースコード参照しそうだから貼っとく...
-
[アルゴリズム]演習(時事問題6)
route150 04/12 13:32:25
"http://d.hatena.ne.jp/rst76/20100115"を参考に、時事問題5を幅優先で解いてみた。参考にしたコードがあまりに的確なので、ほとんど写経だった。 何となくTreeとSetを使ってみた。 わわわ...、写し間違いに気が付いたので封印... GHCiで連続して実行すると、たまにコード更新後にreloadしても昔のコードをキャッシュしてるような気がするのだけど気のせい? で、直ったかなぁ...
-
HaskellのモナドIO
nobsun 09/07 00:00:00
「[http://d.hatena.ne.jp/lethevert/20060905/p1:title]」ですか 「[http://d.hatena.ne.jp/lethevert/20060905/p1#c1157542845:title=酒井さんのコメント]の一言で終了!」と片づけてしまうには惜しい面白い問題なので少し考えてみました. アクション Haskellでは同じ有効範囲内(スコープ)の字面が同じ式は同じ値を指しています.つまり,参照透明性があるということです. という関数を考えた ...
-
[Puzzle] twice
mr_konn 07/11 01:21:05
[http://d.hatena.ne.jp/camlspotter/20100710/1278752186:title]の答えを考えた。 まず直観的に、多分[http://ja.wikipedia.org/wiki/タワー記法:title=タワー記法]的な何かになるだろうなと当りを付けた。 で、書いてみたのが次のコード。 で、結果が同じになったので、これはどうやらタワーですね!特に になりますよかった。 で、どうしてこうなるかは、λ式に直して展開してくとわかると思います。 Church ...
-
[graph-utils][fgl] graph-utils-0.3.6.1 リリース & 式クォータの型多相対応について
mr_konn 06/29 00:52:02
昨日 fgl の作者の方からメールを頂いて、互換性のためにヴァージョン指定をきちんとした方が良いということだったので、[http://hackage.haskell.org/package/graph-utils-0.3.6.1:title=Hackage の最新版]でその辺りの対応をしておきました。Haddockもきちんと生成されているので、そこから色々調べられると思います。 今日は取り敢えず、 Quasi Quoter で (Gr String () ) しか生成出来なかったのを、(Read a, ...
-
[文法]基本文法(divMod, quotRem) 1
route150 03/16 10:19:50
"http://stackoverflow.com/questions/339719/when-is-the-difference-between-quotrem-and-divmod-useful"より、引用... 引用始め ... in GHC on x86, quotRem on Int will compile down to a single machine instruction, whereas divMod does quite a bit more work. So if you ar ...
-
[メモ][SRM][fromC/C++]TopCoder用のテンプレート
route150 06/11 11:14:23
とりあえず、雛形ができたっぽいので、記録... なんつか、VS(Visual Studio)使いは少ないのかな... VSだと、標準エラー出力にメッセージを出力せずに、OutputDebugString()でデバッグ出力する場合が多いと思う。そうすると、IDEのアウトプット・ペインにその内容が出力される。それのどこが素晴らしいかというと、出力時にファイル名と行番号をある書式で先頭に記述してやれば、デバッグ出力があったソースコードの場所にワンクリックで移動できる。メンバ関数名とかも表示してやれば概要 ...
-
Windows でも Hackage から frag を楽々インストール
horaguchi 09/22 21:51:49
[http://d.hatena.ne.jp/TTSY/20080909#p1:title=cabal-installでhackageからlibraryを楽々インストール] という記事を読んで、 Windows Vista でも試してみました。GHC 6.8.3 を使います。 Windows でも大して違わないということが試して分かりました。 記事の通り、 [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/cabal-insta ...
-
[文法][ProjectEuler]基本文法(fmap1)
route150 05/22 02:42:42
Project Euler 35(PE35)も面白そうなのでやってみる。つか、ONeillのprimeの性能を確かめたいだけなのだが... 文章に混じってる記号が変な風に解釈されてしまうのでコメントとして埋め込んだ... 因みにGHCiで実行してみると... 悪くない...
-
Bubble Sort
edvakf 12/09 03:59:30
よく見るバブルソートとちょっと違って、バブルして最後に残るやつが最大値ではなく最小値になっている。 ググってもあまりよさそうなのがなかった。 ↑の bubbleBy はこれでもいい。ちょっとは分かりやすいか。 foldl じゃなくて foldr にしたら reverse が要らなくなるな。しかし大きなリストだと stack overflow になる可能性が。
-
[Haskell][HOC] HOCがインストール出来る様になったみたいです
mr_konn 09/06 00:00:00
[http://code.google.com/p/hoc/:title=HOC (Haskell Objective-C binding)] が普通にインストール出来る様になったみたいです。 したら、あとはREADME.txtに書いてある通りに、 とすれば普通にインストール出来ちゃいました(環境に依っては--user とか sudo とか必要かもしれません)。 Samples/以下のサンプルも普通にビルド出来ました。やったね! 受験が一段落したらHaskellでCocoaアプリをつくりまく ...
-
[逃避][TH] 打倒C++
mr_konn 01/26 00:30:04
それ Template Haskell でできるよ! [http://d.hatena.ne.jp/qnighy/20100124/1264342447:title] とはいいつつ若干(かなり)ルール無視なかんじで、まあとりあえず代入する変数(束縛する函数)をランダムで決めればいいよね……と解釈しました。 ルール厳守版だと、 id:eagletmt さんが [http://twitter.com/eagletmt/status/8192729496:title=TwitterでIORefで書いてる] ...
-
elem関数
hyuki 06/04 00:00:00
elem関数はリスト中に要素があるかどうかを調べます。 elem'を自作。再帰版。 実行結果です。 「高階関数を使え」はいはい〜。 もちろん、これでもOK.
-
[HOC][Haskell][Cocoa] HOCでTwitterクライアント書いてみた
mr_konn 09/13 00:00:00
勉強をサボって[http://code.google.com/p/hoc/:title=HOC (Haskell Objective-C Binding)] でTwitterクライアントを書いてみました。 [http://konn.x0.com/cgi-bin/download/dl.cgi?file=HoTwitter.zip:title=アプリとソース一式はこちら] あと[http://github.com/konn/HoTwitter:title=githubにもソースあります]。 一通りタイ ...
-
型レベルの関数合成?
eagletmt 08/31 23:45:18
[http://d.hatena.ne.jp/keigoi/20090831/1251722634:title] なるほど,そういう発想でいけばいいのか.ありがとうございます. それなら DoubleF のような限定的なものより,ちょっと変えてもっと広く使えそうな ComposeF のほうがいいと思った. 試しに3足してみる.
-
JPEG 判定の ByteString バージョン
eagletmt 08/19 15:30:37
http://haskell.g.hatena.ne.jp/edvakf/20090818 ByteString を使うならこんな感じですかね. 参考 http://hackage.haskell.org/packages/archive/bytestring/0.9.1.4/doc/html/Data-ByteString.html
-
[例外] bracket
syd_syd 06/13 00:00:00
[http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Exception.html#v%3Abracket:title=Control.Exception.bracket] メインのアクションの中で例外がraiseされた場合に、必ずリソースを開放してから例外がre-raiseされます。 高レベル言語には必ず存在する try-finally はこれでやりましょう。 特にリソースを意識しない場合、文字通り[http://w ...
-
[parsec] 電卓で任意の型の値を扱えるようにする
mokehehe 08/03 00:00:00
今までは計算の中でDoubleの値しか扱えなかったのを、任意の型を扱えるように変更する。 まずevalで返す値をDouble型から任意の型を表すValue型に変更する: あとはコンパイラが出すエラーに従ってソースを修正していけばOK。Haskellはこの安心感がたまらない。また今まで比較演算子が1.0(真)や0.0(偽)を返していたところをバリアントのBool値を返すように変更する。 今までは演算ノードのevalはそのまま取り出したDouble値同士で演算すればよかったが、ちゃんと値の型を見て分岐させ ...
-
defineを作る
haskelisp 04/13 00:00:00
defineを作るからには、単に評価結果を返すだけではなく、変化した環境を次の評価を行う際に利用できるようにしなければならない。いろいろ考えたが、今回はStateモナドを使うことにした。 evalをStateモナド化する これまでのevalは評価するS式と環境の2つを引数としてとる関数としていたが、今回はStateモナド化するので、環境の方はモナド側の機構を利用して扱うことになり、引数としては評価するS式1つだけになる。 evalの返値はモナドでなければならないので、単にNilを返していたところはret ...
-
[parsec] 比較演算子、論理演算子、三項演算子を追加する
mokehehe 07/31 00:00:00
条件分岐ができるように比較演算子などを追加する。 真偽値型を用意して比較結果はtrue/falseを返すようにしたほうがいいんだけど、型を追加して煩雑になる手間を考えるとDouble型だけの簡便さには勝てない。0.0をfalse、それ以外をtrueとする。 比較演算子の次に論理積と論理和を追加、これで一応条件分岐っぽいことができる ある程度は使える…けどthenが0だとelseが返ってしまうので完全に代替はできない。なので三項演算子「cond ? then : else」も追加する。変更点は 全ソース ...
-
「すべての奇数の合成数は、1つの整数の自乗の2倍と1つの素数の和で表される」?
edvakf 06/24 10:51:15
Goldbach が考えた命題の反例を上げる問題。(一般に Goldbach 予想と呼ばれているものではない) [http://projecteuler.net/index.php?section=problems&id=46:title=Problem 46 - Project Euler] 合成数というのは、9,15,21,25のように、2つ以上の素数の積となるもの。 例えば9は、 となり、「1つの整数の自乗の2倍と1つの素数の和」である。 この反例を見つける Haskell プログ ...
-
diff
edvakf 06/01 09:49:06
Haskell で diff を書こうと頑張ったんだけど、出入力とかのあたりに来たら急にヤル気が落ちていったので、とりあえずここらで書いておこうと思う。 アルゴリズムについては以下を読んで学んだ。リンク先の説明でもまだ分かりにくいのだけれど、自前では説明したくても面倒くさすぎる。 [http://hp.vector.co.jp/authors/VA007799/viviProg/doc5.htm:title=文書比較アルゴリズム] [http://www.slash-zero.jp/archives ...
-
モナドの勘所
taninsw 12/24 00:00:00
http://d.hatena.ne.jp/m-hiyama/20060421/1145613700 http://d.hatena.ne.jp/m-hiyama/20060418/1145322223 ここを見ながらお勉強。少しだけモナドに親しくなれた気がする。 概要 どんな関数も「(1段の)モナド」を返す関数に変換できるよ。 「モナドを返す関数」同士を合成して「モナドを返す関数」にできるよ。 その合成には結合律が成り立つよ。 結合律はモジュール性を産むよ。 いきなり脱線:無視しましょう。 普 ...
-
Haskellで数独
edvakf 05/27 10:12:35
Mathematica で数独を解くプログラムが10行で書けるらしい。 >http://www.unfindable.net/~yabuki/blog/2009/05/ruby.html:title=数独で見るRuby(とMathematica)のパワーと表現力 by Inquisitor> かなり暗号。でも関数型言語っぽい。じゃあ Haskell でどうなるかやってみよう。 search 探索は、ゴールであるなら終了し、そうでない場合は次を探す。 ↓ 型宣言は無くてもいいけど、あっ ...
-
グローバル変数
nobsun 01/08 00:00:00
[http://d.hatena.ne.jp/kazu-yamamoto/20090107/1231318138:title]がとても興味深い。 興味があるのは、unsafePerformIOの話ではなく、グローバル変数が欲しいという感覚がどこから来ているのかだ。 main で getArgs を使うと、コマンドライン・オプションの処理結果(cflag など)を下位の関数にずっと渡していかないといけない というのがその源だと思うが、直前にあるコード例では、「処理結果(cflag など)を下位 ...
-
グローバル変数(続)
nobsun 01/13 00:00:00
[http://d.hatena.ne.jp/kazu-yamamoto/20090110/1231552839:title]にコメントしたものにコメントがありましたが、コメント欄に大量に書くのは読みにくいかもしれないので、コメントへのコメントへのコメントではありますが、こちらに書いてしまいます。 ...、直観的に言えば、煩雑で面倒だろうなと思います。 argvをグローバル変数として と書くのと と書くのとで煩雑、面倒という点での違いがわかりませんでした。 私の場合、値が変化する変 ...
-
エラトステネスの篩
hyuki 06/13 00:00:00
何となくエラトステネスの篩。 実行結果です。 追記:nobsunの「双子素数」のリスト内包表記がかっこいーなー。 s f g x = f x (g x) の部分は、一つの引数xを複数箇所で使い回す高階関数を作っちゃうところがおもしろい。「○○をしたい」→「それをする高階関数は?」 filterに渡している部分適用((2==) . uncurry subtract)もおもしろい。 まず、Num => a -> a -> aであるsubtractをuncurryで(a,a)->aにしちゃう。これは ...
-
「Haskellによる関数プログラミング」ご案内
nobsun 02/19 00:00:00
2009-03-20(金祝)にjus勉強会「Haskellによる関数プログラミング」で講師をします. 日時:2009年3月20日(金祝) 場所:稚内北星学園大学東京サテライト校(秋葉原ダイビル12階) 以下のところに案内があり,そこから申し込みのページに飛べるようになっています http://www.jus.or.jp/benkyokai/09-03Haskell.html よろしくお願いいたします.
-
IntとInteger
hyuki 06/03 00:00:00
IntはGHCなら32ビット。Integerは制限なし。 では冪乗の無限リストで確認しましょう。 実行結果です。この間おしえてもらった!!も使おう!! 次はIntegerバージョン。 実行結果です。 すごい!!
-
Haskell programming tips
taninsw 12/23 00:00:00
http://www.haskell.org/haskellwiki/Haskell_programming_tips 序文 このページではコードが改善されていく例を見ていきます。そこから一般的な法則を会得しようと努めましょう。とはいっても何にでも適用できるわけじゃありませんし、趣味の問題もあるかもしれません。私達はそれを知っていますから「これは議論の対象だ」と全ての項目に付け加えないでください。(代わりに/Discussionになら「これは議論の対象だ」と加えても構いません。そこで一定のコンセンサスが ...
-
Haskell でスクリプトを書く
nobsun 01/10 00:00:00
ための簡単なフレームワークのつもり
-
ポーカーの役判定
taninsw 12/13 00:00:00
http://ja.doukaku.org/comment/8152/ に書いたものを http://ja.doukaku.org/comment/5456/ をみながら、ちょっとだけ書き直してみた(data使ってみたかった) 結構綺麗に書けたと自負してるんだけど、どうだろう。
-
href
hyuki 05/28 00:00:00
処理系は以上でOK。次はリファレンスマニュアルだな。青木さんのhrefを入れてみよう。 href ダウンロードして、href-0.3.1.tar.gzをgunzipして、tar xvfで展開。 href putStrLnだと、EUCらしく文字化けするのでmoreで自動変換させることにする。 SICPのときのように、info.batというバッチファイルを作っちゃえ。 試してみよう。 ふむふむ、いい感じ。
-
夏目漱石の「こころ」を行単位でシャッフルしたい
horaguchi 09/21 02:49:40
検索すると [http://d.hatena.ne.jp/isobe/20080624/1214286989:title=乱数/シャッフル - isobeの技術日誌] という記事が見つかりました。 ほとんどこれで動きそうです。 というコードがあり、 (追々記)import Data.Ordすると (comparing fst) と書けてさらにお手軽。 を参考にすると、 で動きました。これを関数合成 を使って弄ると、 変数が減りました。これをファイルに保存(shuffle. ...
-
誇大宣伝ではないエラトステネスの篩
nobsun 06/18 00:00:00
無限リストの虚仮威し(オッ.)の例としてよくあるのがエラトステネスの篩と 称されている とか というプログラム.でも [http://lowlife.jp/mft/weblog/2006/04/21.html:title=遅延評価によるエラトステネスの篩]にも書かれているように「等差数列で倍数が取り除けるということを使って初めて篩と呼べるので、これをエラトステネスの篩と呼ぶのは実は誇大宣伝だ。」 そこで,誇大宣伝ではないエラトステネスの篩の実装をば... (tさんのコメントを受けて,コー ...
-
1000000個の素数
nobsun 06/17 00:00:00
[http://ll.jus.or.jp/2006/blog/doukaku1:title]にて [http://mput.dip.jp/mput/?date=20060617#p01:title=mputさんの煽り]につられて、 というより単純なsieveで駄目なのか確かめたくて と定義してインタプリタでやとうとしたけど,待ちきれないかも... でもメモリは平気だよ. おそっ.だいたい幾つくらいなんだ,1000000番目の素数って? 17000000 弱 かなぁ.おそすぎ,全然表示しきれないじゃん. ...
-
interact函数
mr_konn 02/23 20:20:41
interact函数を使うと、面倒な入出力に煩わされなくて済みます。 例えば、echo.hsを例に取ると、先ず思いつくのは下のようなコードでしょう。 getContentsで入力もらって、それをputStrに丸投げして出力してもらってるわけです。 さて、次にitneractを使った例を見てみましょう。 これだけです! interactは、String -> String を受け取って、その函数を標準入力に適用して出力してくれる函数です。定義は下の通り。 これを知らなかった人は、多分これで縮む ...
-
ふつける勉強会 第12回目 第十二章 「Wikiエンジンの開発」
sshi 09/23 00:00:00
このレジュメでは、Wikiってなに?CGIってなに?とかそういう話はばっさり割愛。LazyLinesのソースの理解のみにフォーカス。全部やる根性はなかったので、だいたい本書に従って主要な部分だけを解説する。ソース理解は、import関係を把握して全体図を頭にいれてから、各関数の型を追っていけば理解するのはそんなに難しくないと思う。静的型付き万歳。 ソース一覧 http://www.loveruby.net/ja/stdhaskell/samples/ の 12、13章のところで参照可能。 全体の構 ...
-
SEND+MORE=MONEY
nobsun 10/19 00:00:00
[http://d.hatena.ne.jp/syd_syd/20061018:title]より, 素朴にリストモナド m が 1 であることと,s + m + 1 が 10 以上であることはほぼ自明?なので その知識を使うと こうするとだいぶ速くなる.そりゃそうだ.
-
直前の評価値を覚えている変数
nobsun 06/12 00:00:00
[http://haskell.g.hatena.ne.jp/hyuki/20060612/it:title]より. ghci ではデフォルトで it なんだけど,hugs では $$ です. hugs では,この文字列を好きに変更できる.ちょっと危険^^; Hugs> 1 + 3 4 Hugs> $$ 4 Hugs> :set -rit Hugs> "modi"++"fied" "modified" Hugs> it "modified" Hugs> $$ ERROR - Sy ...
-
zipWith関数
hyuki 06/03 00:00:00
zipWith関数は二引数関数を使って二つのリストを混ぜ合わせます。 zipWith'を自作(再帰版)。 「高階関数を使え」というアドバイスに従い、mapを使う。 zipは[a] -> [b] -> [(a, b)]で、uncurryは(a -> b -> c) -> (a, b) -> c なのでmapが使えるようになる。
-
Project Euler - Problem 21
nobsun 03/14 00:00:00
http://d.hatena.ne.jp/takatoh/20080314/euler021 にあったものを即席で解こうとして,バグだらけのコメントをつけてしまった. とりあえずここに書きなおしたものを晒しておこう.
-
パーサの作成
haskelisp 02/25 01:28:35
リストの表示(出力)が出来るようになったので、今度はパーサを作って読み込み(入力)を出来るようにする。 これができればテストのたびにCons (Symbol …とか書く苦労から解放される…。 それと、せっかくなので評判が良さそうなParsecを使ってみる。 S式用パーサ S式というのは、アトムかリストのどちらか。 なので、S式を読み込む場合は、まず最初の文字が"("かどうかを見て、"("だったらリスト用パーサを使って読み込む。(1行目) そうじゃなかったらアトム(今のところシンボルのみだが)として読み込 ...
-
らしいコード(って?)
nobsun 11/09 00:00:00
[http://d.hatena.ne.jp/jdnaoya/20071108/1194526373:title]お姉さんほんとうにゴメンなさい. 昨日のコードはバグ入りだったんですね.それに実はわざわざ変な(Haskellらしくない)書き方をしていたんです.わざわざ命令プログラミング風に書いたのでした. は Haskellらしく書くとたとえば, という感じになると思います. [http://www.logos.ic.i.u-tokyo.ac.jp/icpc2007/jp/domestic/ ...
-
とあるプログラム
nobsun 10/24 00:00:00
[http://d.hatena.ne.jp/nobsun/20071019/p1:title]に書いたプログラム(修正版)にさらにすこし手を入れたもの. 追記:[http://d.hatena.ne.jp/ha-tan/20071024/p1:title]で指摘されたとおりまた抜けがあった.orz 修正.
-
[Haskell] Tea break: Haskellでフィボナッチ数列
harg 08/23 00:58:54
定番の話題。 愚直に実装 これだと、n のタプルの値の変化を、Haskellで表現できるとうれしい。それに対応する関数が、fibStepである。 つまり、n番目のフィボナッチ数を得るには、(0,1)にn回fibStepを適用して、その結果得られたタプルの最初の値を取り出してやればいい。 この方法が愚直な方法と違って優れていることは、計算量が[tex:O(n)]ですんでしまうことである。指数関数的に増加する計算時間を、多項式時間にできた(しかも1次の)ことにより、爆発的に計算が ...
-
束縛?
taninsw 06/14 00:00:00
束縛とは代入ではなくて名前を付けているって感じなのかな。 値に名前を付けたり関数に名前を付けたりしてるだけ。 ・・・あれ、Rubyの変数名も確かオブジェクトに名前を付けているだけだったような 同じスコープ内で変数とオブジェクトの束縛を付け替えられるのが問題なのか。
-
[Haskellな日々] 今Haskellでやってみたいこと。
morioX 02/01 00:00:00
「入門Haskell」も一通り読み、そこそこHaskellの書き方も分かってきた今日この頃。Craftを読むのもいいけれど、そろそろ自分でもいろいろプログラムを書いてみたいなー、とか思うようになった。とりあえず、いま興味があることを一通り列挙しとく。 Parsecを使ったログファイルの解析方法の確立(正規表現+Perl/Ruby/Shellのやりかたがどうしても好きになれないので) XMLファイルの解析(HaXMLとかHaskell XML Toolkitを使って) ネットワークプログラミング(H ...