haskell

let式で一行に複数束縛を書くときの区切り文字

個人的備忘録なんとなく、連続した数字の有限のリストから素数をとりだすエラトネスのふるいを作りたくなって、ghciを立ち上げてつくってみた。 最初、 let fact (x:xs) = x : fact [ y | y <- xs , 0 /= ( y `mod` x ) ] な感じで、定義したんだけど、よく…

hasktagsで検索できない

haskell のコードで ctags みたいな tag 検索できないかなぁと思っていたら、hasktagsというのを知ったので試してみた。hasktags 自体は、ghc に添付されているっぽい。hasktags 実行して tag ファイルが生成確認後、vimを起動。で、タグジャンプしようとし…

ghciでファイルをロード

rubyneko - Haskell勉強会#8 参加してきたより 例えばPreludeのmapなら、ghciでPrelude> :t map map :: (a -> b) -> [a] -> [b]のようにして得られるけれど、自分で書いたプログラムからの場合 どうするのか。 ghciでどうロードするのか調べたが、時間内に分…

オブジェクト倶楽部メルマガのモナド紹介のあたり

自分のための備忘録 Article 200 at 07/07/18 16:51:01 From: noreply@objectclub.jp Subject: 【オブジェクト倶楽部: 2007-25号】 Article 209 at 07/09/26 17:04:00 From: noreply@objectclub.jp Subject: 【オブジェクト倶楽部: 2007-34号】 Article 21…

ボイヤー-ムーア法をHaskellで

昨日書いていたプログラムが、なんとか直せた。原因はIO汚染。Maybe aを返すところをIO(Maybe a)に変更したら怒られなくなった。というわけで、昨日書いていたのは、ボイヤー-ムーア法。詳しくはリンク先で。で、確かボイヤー-ムーア法って、高速にするため…

hoogleとlambdabot

今日、hoogleにてcurryを調べようとすると、なんか見知らぬやつが、The Functional Logic Language Curryなんて勧めてきた。で、このLambdabotというのは、どうやらHaskellのIRCで活躍しているみたいなんだけど、結構おもしろい機能をもっているみたい。hask…

let

via 83's : letの束縛部 Prelude> let [x,y] = [x,y] x :: () y :: () うわ、unitなのか。print xなんかやると、ぜんぜんプロンプト返ってこない。

ArrowのloopとYコンビネーター

言語ゲーム - ArrowLoopで、ArrowのloopでYコンビネーターができるというので、ちょっと試してみた。Arrowのloopは以前、MaDさんの記事でなんとなく、理解をしていたつもりだったんだけど、実際に自分で書いてみると全然わかっていない、Haskell(主に、if式…

仲間はずれの判定 どう書く?org

早く起きてしまったので解いた。 otherList :: (Eq a) => [a] -> [a] otherList (x:xs) = [ y | y<-xs , y /= x ] quasiHomo1 :: (Eq a) => [a] -> Bool quasiHomo1 = (== 1) . length . otherList quasiHomo2 :: (Eq a) => [a] -> Bool quasiHomo2 xs = (==…

htmlのパースで苦戦中

HXT - HaskellWikiを読みつつ、htmlをパースしたいなぁといろいろいじっていた今日。まぁ、まじめに読むのはあれなので、コード片やタイトルで6.1 Selecting text from an HTML documentが、僕のやりたいことに近いかと思って、 selectAllText :: ArrowXml a…

こんな関数ないのかなぁ

Arrowで書いていると、(&&&)で関数分岐させといて、あとで2引数の関数をuncurryするというのを僕はよくやるんですが、 -- こんなかんじ pow_a = (id &&& id) >>> uncurry (*) 毎回uncurryするのめんどいということで、こんな感じの関数がないのかなぁと思っ…

隣り合う二項の差をArrowを交えて

takkan_mのNo planな日常 - 隣り合う二項の差 どう書く?orgを書いた後、計算したい2値のタプルのリストをつくって回したいと思っていたら、nobsunさんのSコンビネーターでの実装におぉっと思ったので、似たようなのをArrowを使って書いた。 import Control.…

隣り合う二項の差 どう書く?org

なんのひねりもない。 $cat diff.hs diff (x:[]) = [] diff (x:y:ys) = (:) (y-x) $ diff $ y:ys $ ghci diff.hs ___ ___ _ / _ \ /\ /\/ __(_) / /_\// /_/ / / | | GHC Interactive, version 6.6, for Haskell 98. / /_\\/ __ / /___| | http://www.haskel…

wcのArrow版 via 趣味的にっき

趣味的にっき - Arrowを使ってwcコマンドを実装してみましたより 演算子じゃなくてパターンマッチっていうのが、いまひとつかっこ悪いのですが、何かいい方法ありませんかね? 趣味的にっき - Arrowを使ってwcコマンドを実装してみました ということだったの…

Arrowちょっとわかった

疲れたと言いつつ、夜更かしするのが、ここ1ヶ月ぐらいの俺。モナドもようわかっとらんのに、最近Arrowを勉強してみようと思ってみました。以下のサイトのまとめが一番わかりやすかったです。言語ゲーム - How To Arrow 基本 言語ゲーム - How To Arrow2 並…

与えられた数字のケタ数

与えられた数字のケタ数 どう書く?org via 趣味的にっき - 与えられた数字のケタ数よりあえて、数字を文字列にして数える方向は無しの方向で書いてみた。おかげで横長。 Prelude> let keta x = snd $ head $ filter (\(y,z)-> y > x) $ zip (iterate (*10) …

.ghciをつくった

選挙速報をみながら、栄光のグラスゴーHaskellコンパイルシステム利用の手引き バージョン6.6.1を読んでいます。で、第3章 GHCiを使うで、ghciを起動しながら、ファイルを編集できることを知る。編集するためのコマンドは、:edit。 $ ghci ___ ___ _ / _ \ /…

アルファベットの繰り上がり

アルファベットの繰り上がり どう書く?org via Haskell はスケるよ - アルファベットの繰り上がり module Main (main) where alphaList = let alphas = ['A'..'Z'] in (concatMap (\x->[x,' ']) alphas) ++ (concatMap (\x ->concatMap (\y -> [x,y,' ']) a…

帰りに気になった問題。

帰りに電車内のテレビ(?)で見た、受験の神様のCMの問題が気になった 1から1000まで並べて書いたとき、1は何回書くでしょう? 1から99までの間で、1の位にでてくる1は10回。10の位も10。これが、1000までだと、(10 + 10) * 10だから200。また、1から1000までの…

アレイのuniq どう書く?org

Twitterで向井さんがこんなこと言っていた。 http://ja.doukaku.org/16/ne... お題が「アレイのuniq」なのに Haskeller が Array ではなくリストを使っている件 http://twitter.com/jmuk/statuses/144327752 というわけで、反応してみる。 import Data.List …

どう書く? - 倍数になる13進数

倍数になる13進数 どう書く?orgを解いてみた。 import System.Environment calc13 :: (Num a, Read a) => [Char] -> a -> a calc13 [] i = i calc13 (x:xs) i = calc13 xs $ i * 13 + (read [x]) match :: String -> Bool match i = (==) 0 $ rem ( flip ca…

haskellに対する"4F"というか

haskellのメーリングリストで、いけがみさんが以下のようなことを述べている。 今日から 7/19(木)まで、 Haskell に対する "4F"を、このメーリングリストや blog でぶちまけてください。 考えがまとまとまっていなくても、思いついたらスグに 知らせていただ…

配列をユニークにしてその個数とともに返せをHaskellで

もとはbabieさんとこでやっていたのをrubycoさんがやっているのを見て、やりたくなった。ほんとは、rubyで書こうと思ったんだけど、inject使って、Hashでっていうのを書いた後に、それbabieさんがやってるじゃんということに気づきた。しかし、 ["foo","bar"…

幸せが足りない

Haskellでネットワークプログラム書きたいと思って、ネットワークモジュールを落としてきて、インストールしようと思ったんだけど、いろいろ足りないみたいです。とりあえず、hugsとhappyを入れようと思い、portsを使ってみたんだけど、2回はまった。1回目…