2007-09-01から1ヶ月間の記事一覧

let式とwhere節

大雑把な理解ですが、let式はローカル変数を使う時に、where節はローカル関数を使う時に登場するもののようです。let式はinとセットですね。let式は式なので値を返し、where節は値は返さないというのが違い。と、書いてみましたが、実はまだあまりよく分かっ…

関数定義

関数名や変数名の先頭はアルファベット小文字か「_」。大文字は使えないのですね。試しに先頭大文字の関数を定義しようとしたら "Invalid type signature" とエラーになりました。二項演算子の定義については使う機会があまりなさそうなので、二項演算子の定…

case式

関数の引数以外でパターンマッチやガードを使いたい時に使えます。なので、他の言語のcase文との関連で覚えるのではなく、パターンマッチとガードを使うための式と覚えた方が良さそうです。

パターンマッチ

ghcコマンドの場合-Wオプションでパターンマッチで実行時エラーが起きる場合に警告してくれるそうです。変数パターン、「_」パターン、リテラルパターン、タプルパターン、リストパターン、データコンストラクタパターン、「@」パターンについての説明を読み…

if式

1行で書くのが一般的とのこと。以下の書き方もよく使われるそうです。 if c == '\t' then '@' else c if c == '\t' then '@' else c 式の継続を使った書き方ですね。

レイアウト

do式を使って複数の式を書く時にはインデントを揃えていました。インデントを使う以外にも{ }と;を使って書くこともできます。オフサイドラインはdo等のあとに現れる単語の位置によって決まるので、以下のどちらの書き方も可能です。 main = do cs <- getCon…

ブラウズノードが分からない

次のバージョンの公開に向けて機能追加中です。「時計」や「ベビー&マタニティ」の検索で、バーゲンコーナーの商品一覧を出すためにブラウズノードが知りたかったのですが分かりませんでした。どうやって調べれば良いのでしょう。時計ストアと言いながら、…

コメント

これが出てくるのを待っていました。一行コメントは--。ブロックコメントは{- -}。ブロックコメントはネストできます。珍しいですね。リテレイト形式というのがあるそうです。これはコメントがメインで、コードがおまけのような書き方。

問題追加

理科を追加しました。

練習問題

ソースコードがどのように解析されるかを括弧で答える問題。問題はこの3問。 resolve f (x:xs) = textify x ++ resolve f xs getenv key env = fromMaybe "" $ lookup key env readTemplate id = readFile $ prefix repo ++ "/" ++ id 私の答えはこれ。 reso…

実習 cat -n

関数適用が最も優先順位が高くて、どの演算子よりも優先的に結合します。わかりにくいところらしいです。タプルのパターンマッチが出てきました。と言ってもちょっと出てきただけでちゃんとした説明はもう少し後ろで出てくるみたいです。

問題追加

その12(2x2)を追加しました。

問題登録

早押しクイズに問題登録機能を追加しました。問題募集中です。

リスト

Haskellのリストは一方向リンクリストで、リストをたどる順番は前から後ろ。無限リストが簡単に作れます。 main = do print $ take 10 [1..] print $ take 10 [1, 3..] [1,2,3,4,5,6,7,8,9,10] [1,3,5,7,9,11,13,15,17,19]null関数はisNullという名前の方が…

タプル

リストと違って異なる型の値を一緒に扱えます。fstとsndで2要素のタプルから値を取り出す方法はわかったのですが、3要素以上のタプルから値を取る方法は不明のままです。

文字と文字列

文字コードはUnicodeとのこと。文字リテラルはシングルクォート、文字列リテラルはダブルクォートを使用。文字と数値間の変換は、Char.ordとChar.chrを使用。試しに以下のスクリプトをsjisで書いたところコンパイルエラーになりました。utf-8では無事コンパ…

iPで紹介されました

フリーウェアライブラリのコーナーです。iP ! (アイピー) 2007年 10月号 [雑誌]出版社/メーカー: 晋遊舎発売日: 2007/08/29メディア: 雑誌この商品を含むブログ (1件) を見る

基本的な型

6章に入りました。まずは真偽値と数値の説明。論理演算子は関数として用意されているのですね。関数ということなのでこんなこともできるわけですね。 f = (&&) main = do print $ f True True print $ f True False print $ f False True print $ f False Fa…

問題追加

その11(2x2)を追加しました。

早押しクイズ

作りました。まだ2問しか登録していません。問題登録機能はこれから作ります。

遅延評価利点欠点

遅延評価の利点と欠点の紹介。利点としては3点紹介されていました。 不要な計算を減らせる 無限の長さのリストが扱える インターフェイスを統一できる 1点目の不要な計算を減らせるのは分かります。2点目の無限の長さのリストが扱えるというのは今まで扱いた…

QUOカード再発行

QUOカードで支払いをしようと思ったら読み取りエラーで使えなくなっていました。データが読み出せないようになったらもうあきらめるしかないと勝手に思い込んでいたのですが、カードを再発行してもらえました。再発行手続きがちゃんと用意されていたのですね…

遅延評価

置き換えモデル・最外簡約・グラフ簡約・遅延評価・参照透明性という言葉が出てきました。 必要なときに必要な分だけ処理をするという遅延評価の仕組みは、説明されてみると素晴らしい仕組みのように思えてきました。