タグ

ブックマーク / jutememo.blogspot.com (9)

  • Firefox でピン留めしたタブの読込みを遅らせる

    0. 目次 1. 軽さを保ちたければ、タブをなるべく開かない 2. タブを選択したときにページを読み込む 3. 「ピン留めしたタブ」も選択したときにページを読み込む 1. 軽さを保ちたければ、タブをなるべく開かない Firefox でタブを常に 100 以上開いているタブジャンキーにとって問題なのは、開いたタブによりブラウザの動作が遅くなること。 特に、再起動した後、ブラウザを操作できるまでに時間がかかるとイライラしてくる。 (+_+) a. タブをなるべく開かず、開いたら閉じる これを回避するには、再起動する前に開いていたタブの内容を読み込まない設定にしておくことが重要。 もっとも、タブを開かないで置くことができるのなら、それが一番良い。 cf. できる限りタブを閉じれば、激重のFirefox が劇的に軽くなる – アドオン OneTab で開き過ぎたタブをリスト化 b. ピン留めしたタ

  • Haskell の Prelude 散策 (2) - 述語

    「Haskell の Prelude 散策 (1) - リスト操作 : 要素の重ね合わせ (folds)」の続き。 1. 述語とは、主語に関する「何かを表す」部分 前回は、リスト操作の一部を試した。今回は、Prelude を読んでいたときに見かけた、 predicate (述語) について調べる。 「述語」と言えば、小学校の国語の時間に習った「主語」と「述語」思い出す。「ことばのきまり」という授業あったけれど、嫌いだったなぁ。 ^^; 述語 – Wikipedia によると、 言語学において文や節の中心をになう成分のこと。他の名詞句に関する何かを表わす部分である。 例えば 私は日人です。 という文の場合、主語である「私」に関する `何かを表わす部分’ というが「日人です」に相当する。 2. Prelude のドキュメントに書かれている「述語」 さて、Prelude のドキュメントにおい

    Haskell の Prelude 散策 (2) - 述語
  • Haskell の代数的データ型を比較、特定の基準でソート – compare, sortBy

    Ruby であるクラスのオブジェクトを比較可能にするには、クラスに Comparable モジュールをインクルードする。Python なら __cmp__ メソッドをクラスに実装。 同じように Haskell でも代数的データ型を比較できるようにするには、Ord クラスのインスタンスにする。 比較できるように 代数的データ型の定義 例えば、「人」が「名前」「年齢」を持つことを代数的データ型で表現すると、 data Person = Person { name :: String , age :: Int } deriving Show Ord クラスのインスタンスにする Data.Ord によると、 Minimal complete definition: either compare or <=. Using compare can be more efficient for compl

  • Haskell のWriter モナド (1) – Control.Monad.Writer を使う前に

    1. 最終的な結果だけでなく、中間結果も出力したい 例えば、次のような簡単な計算を行わせた場合、 (1 + 2) * 3 - 4 答えは `5’  となる。 関数 (演算) が適用される、それぞれの過程の結果を考えると、 1 + 2 => 3 3 * 3 => 9 9 – 4 => 5 となる。 このように最終的な結果だけではなく、計算途中の結果も表示したい場合には、どうすればいいのだろう? 2. let 式で中間結果を束縛 まず、考えられる方法は、それぞれの中間結果を、後で参照できるように let 式内で変数に束縛。結果をコンマ区切りで表示するなら、 main = do let a = 1 + 2 b = a * 3 c = b - 4 print $ show a ++ "," ++ show b ++ "," ++ show c ++ "," 結果は、以下のようになる。 "3,9,5

    Haskell のWriter モナド (1) – Control.Monad.Writer を使う前に
  • Haskell でデータコンストラクタによるパターンマッチ

    0. 目次 let 式でパターンマッチを利用 パターンマッチは、代数的データ型の値を分解して、値を取り出す パターンを利用できる場面は 6 つある case 式におけるパターンマッチ パターン束縛におけるパターンマッチ ラムダ抽象におけるパターンマッチ リスト内包表記におけるパターンマッチ do 式におけるパターンマッチ 1. let 式でパターンマッチを利用 パターン束縛とは,左辺がfun x ... のような関数ではなく,Just xや(x,y)などのようなパターンになる等式のことです。パターン束縛はトップレベルで定義するよりもlet式などで利用することのほうが多いと思うので,… (第8回 遅延評価の仕組み:ITpro より、太字は引用者による) ん? (@_@) let 式でもパターンって使えたんだ。 let 式 と言えば、 *Main> let x = 100; y = 200 i

  • Haskell のモジュールの階層化と、型クラス - パラメータ多相とアドホック多相

    0. 目次 1. 同じ名前のフィールドラベルを持つ型を定義したい 2. モジュールを分割し、階層化する 3. 型の意味 4. 型クラスの役割 5. パラメータ多相と、アドホック多相 6. 多相性とオブジェクト指向 7. 演算子の意味 8. 継承とジェネリクス 9. Ad hoc の意味 10. 型クラスの定義と、インスタンス化 11. 余談: モジュールに分けない場合 1. 同じ名前のフィールドラベルを持つ型を定義したい 2 つの型が、類似している場合、フィールド名に同じ名前を使いたい。 例えば、「名前」と「年齢」を持つ、「犬」型を定義する。 このとき、フィールドラベルを使うなら、 data Dog = Dog {name :: String, age :: Int} deriving Show 「犬」型と同様のフィールドを持つ、「」型も定義。 data Cat = Cat {name

    Haskell のモジュールの階層化と、型クラス - パラメータ多相とアドホック多相
  • Firefox のスクロールが遅い – ハードウェア アクセラレータの値を変更

    1. 画像がたくさんあるページで、異常に重くなる Firefox が特定のページで重い。 画像がたくさんあるとダメなのだろうか? 例えば、 4U - 4u beauty image bookmarking なんてスクロールさせると CPU が異常に反応して、もたつく。 しかも、不思議なことに、マウスを画像の上に持っていくと、マウスの動きが激烈に悪くなる。 (+_+) スクロールが遅い原因として、表示の拡大縮小が原因 だったことがあった。しかし、今回の原因はこれではない。 2. background-attachment を設定しても効果なし 調べてみると、firefoxだとこのページが重いです。 - 教えて!goo に * { background-attachment:scroll !important; } これをuser.jsではなく、userContent.cssに書けばいいです。

    Firefox のスクロールが遅い – ハードウェア アクセラレータの値を変更
  • Haskell でランダムな値を生成する System.Random

    1. System.Random のクラスと型 Haskell の標準ライブラリには、ランダムな値を生成するパッケージがある。 Haskell/Understanding monads – Wikibooks によると、 There is much research on constructing good pseudo-random number generators, but fortunately, the Haskell standard library module System.Random already implements a ready-to-use generator for us. System.Random には、二つのクラスと一つの型がある。 class RandomGen Random data StdGen RandomGen は、ランダムを生成するジェネレ

  • Haskell で正規表現 (2) =~ , Python・Ruby と比較しながら

    以前試したように Haskell において正規表現を使いたい場合は、Text.Regex モジュールを利用する。(cf. Haskell で正規表現) 流れとしては、 「正規表現型の値」を生成 : mkRegex (1) を利用して一致する部分があるか確かめる : matchRegex  import Text.Regex main = do print $ matchRegex (mkRegex "(piyo)") "123hogepiyofuga" print $ matchRegexAll (mkRegex "(piyo)") "123hogepiyofuga" 結果は、 Just ["piyo"] Just ("123hoge","piyo","fuga",["piyo"]) ただし、matchRegex において Just で包んで返される値は、 mkRegex の正規表現で s

  • 1