[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

Arrayに関するsiroccoのブックマーク (4)

  • Data Structures

    10. 種々のデータ構造 この文章では、大きいデータを Haskell で扱うほう方法について述べます。 Array, FiniteMap, IORef, Array.IO, HashTable を紹介します。 1. リストが関数型言語のデータとして用いられている理由 関数型言語でリストが多く用いられているのは、リストは Cons する分には、データを全て作り直す必要がなく、 Cons した分を付け足してそこのポインターを新しいリストとみなせるからです。 例えば、[1,2,3] というリスト図1のような構造体(コンスセル)の列への最初のポインターとして実装できます。 これに、0 を Cons すると 0 のコンスセルを先頭に付け足すだけで新しいリスト [0,1,2,3] が生成したと して取り扱うことが出来ます。 つまり、コンスセルの先頭へのポインターをリストとすると、新しいリストが少ない

    sirocco
    sirocco 2013/11/03
    HaskellのArrayは参照は O(1) で出来るが 更新は O(n) かかる。Array 型は参照が主なときに使うと良い。Array.IO は参照、更新が O(1) で出来る。(IOUArray Int Double):unboxに出来ない型の配列のときはIOArray。
  • すごい配列楽しく学ぼう

    2. テーマについて 勉強会をやるらしい → 各 λ 人の好きな題材でいいらしい。 → じゃあ Haskell で何か話そう。 → でもすごい H 出たし基的なことはもう話題と して出尽してるよな…… → あれ?この配列について書いてなくね? → λ < Haskell の配列も楽しく学ぼう! 3. Haskell とは!  なんてことを話している時間はない。  とりあえず今後の話に関わることとしてこれぐらい。  型に厳しい(強い静的型付けである)  キャストとかゆとりな事はしない  型が合ってないと絶対許してくれない  参照透明性が(基的には)成り立つ  IO ・破壊的変更の扱いがめんどい特殊  unsafe ほげほげの話はしない  「型クラス」がある  「型クラス」は共通の性質を持った型の集まり  ある型クラスに関して polymorphic な関数とか書

    すごい配列楽しく学ぼう
    sirocco
    sirocco 2013/11/02
    よく読んでいなかった。ブックマークしなおし。 古いコメント-> 「お酒飲んじゃったからあとで読む。パラパラっとは見ました」
  • 第19回 配列でデータ・アクセスの効率を上げる

    Haskellでは,リストを基的なデータ構造として様々な用途に使います。一方,Cなどの命令型の言語では,配列(Array)を基的なデータ構造として用います。 この違いはどこから生じているのでしょうか? Haskellでリストを使う場合と配列を使う場合にはどのような違いがあるのでしょうか? 今回はこうした切り口で配列について考えていきたいと思います。 リストと配列の違い 配列には様々な実装方法があり,どのような実装を採用するかによって細かい性質が異なります。ただ,どのような実装であっても,配列には共通した性質があります。先頭からの逐次的なアクセスにもランダムな要素へのアクセスにも同じように適しているという点です。 リストは再帰的な定義になっているため,当然,逐次的なアクセスには適しています。しかし,参照(look-up)や更新(update)などの操作で必要とされる,ランダムなアクセスに

    第19回 配列でデータ・アクセスの効率を上げる
    sirocco
    sirocco 2012/02/07
     「第7回で説明したように,Haskellではマシン表現そのものではなくボックス化された値を扱います」。非ボックス化の話なんだけど、元のボックス化がわからない・・・Orz
  • C++ /多次元配列の動的作成 - YImai's memo

    多次元配列の動的作成方法 long array[x][y]の作成方法 // 宣言部 long **array; // 作成部 array = new long*[x]; for(int i=0;i<x;i++){ array[i] = new long[y]; } 解放方法 for(int i=0;i<x;i++){ delete[] array[i]; } delete[] array; 補足 この例では、new失敗時のエラーチェックを行っていないので、実際に実装するときはエラー処理を忘れずに!! ↑ コメント 助かりました。ただ,配列作成時のforの中は「array[i] = new long[y];」ではないかと。 -- hemul? 2006-09-01 (金) 16:59:11 ソースの修正、どうもです。>hemul -- YImai? 2006-10-04 (水) 03:24:

  • 1