EMC++ Chapter5

序文 用語 ムーブセマンティクス コピー演算をムーブ演算に置き換え可能にする。 ムーブコンストラクタ、ムーブ代入演算子はオブジェクトのムーブセマンティクスを制御する。 完全転送 任意の実引数を取り、他の関数へ転送する関数テンプレートの記述を可能…

EMC++ Chapter5

序文 用語 ムーブセマンティクス コピー演算をムーブ演算に置き換え可能にする。 ムーブコンストラクタ、ムーブ代入演算子はオブジェクトのムーブセマンティクスを制御する。 完全転送 任意の実引数を取り、他の関数へ転送する関数テンプレートの記述を可能…

TPOP - UNIX思想 3.37〜 (WIP)

UNIX思想 UNIX設計思想の正しさ UNIXは1969年に生まれて現在まで使われている。設計思想の正しさは長い実績が保証している。 モジュール化の原則 モジュールは自己完結させる 理由 問題の発生箇所がモジュール内に局所化できる。 方法 関連性の高いもののみ…

TPOP principle3.29 7つの設計原理

第3章 principle 3.29〜3.36 7つの設計原理 コード妥当性レビュー観点 単純原理 同型原理 対称原理 階層原理 透明原理 明証原理 安全原理 線形原理 単純原理 局所的な完全性を重視する ひと目で自明がいいに決まってる 複雑なところにバグが出る 基本的に独…

TPOP principle 3.64 UNIX哲学9 - フィルタ化

第3章 principle 3.64 UNIX哲学9 - フィルタ化 ソフトウェアはフィルタである データを生成するのは人間 データにフィルタをかけて別の出力を表示するのがコンピュータ 故に、まず入力ストリームと出力ストリームに着目し、そのフィルタリングとして設計を考…

TPOP principle 4.5 コードの臭い

第4章 視点 principle 4.5 コードの臭い Bad smell in code. 言葉の復習 設計とは何か。 principle 1.2 コードは設計書 「基本設計」「詳細設計」「プログラミング」「テスト」「デバッグ」全てを「設計」と呼び、「コード」は設計書、「リリースビルド」が…

C++TT Chapter5 - SFINAE

考察・まとめ 問題 SFINAEは何の略か。 SFINAEとはどのような仕組みのことを言うか。 型特性を英語で言え。 型特性メタ関数とは何か。 型Tがiterator型を持っているか判定するhas_iteratorを様々な方法で実装せよ。

リファクタリング 第1章

問題 構造的に機能を付け加えにくいプログラムに新規機能を追加しなければならない場合、どうすればよいか。 リファクタリングをする時に、最初にすることは何か。 メソッドを抽出した際に、抽出したコードの責務が元のクラスにないことがわかった。メソッド…

LYH 9.1 ファイルとストリーム

問題 (1) foreverについて、型シグネチャと用途、importすべきものを言え。 (2) toUpperについて、importすべきものを言え。 (3) capslocker.hsを実装せよ。 (4) getContentsは遅延I/Oであり、入力が大きい場合は( )消費量の面で有利である。 (5) contents <…

入門ソーシャルデータ 1.1, 1.2

※本記事では、書籍を読んだときの自己解釈によるまとめや感想を記述しています。実際の内容とは異なりますのでご注意下さい。 1.1 概要 TwitterのAPIを概観し、頻度分析を使ってツイートから何らかの分析結果を導き出し、データマイニングの基礎を学ぶ。 学…

LYH 8.3 I/O アクションどうしをまとめる

8.3 I/O アクションどうしをまとめる main = do putStrLn "Hello, what's your name?" name <- getLine putStrLn $ "Zis is your future: " ++ tellFortune name 8.1と説明が重複するところがあるが、もう一度書く。 上のコードでは、getLineが副作用を扱っ…

LYH 8.2 Hello, World!

8.2 Hello, World! main = putStrLn "hello, world" これをhelloworld.hsとして保存し、 $ ghc --make helloworld と入力する。コンパイルされて、helloworldという実行ファイルが作成される。 8.2 確認問題 putStrLnの型を調べよ。(:t putStrLnの結果を示せ…

LYH 8.1 入出力

8.1 入出力 8.1 不純なものと純粋なものを分離する Haskellでは関数が副作用を持つことが許されない。木のようなデータ構造でさえ、要素を追加しようと思ったら、新しい要素をが追加された木を、新たに変数に束縛することで対応できた。しかし、入出力に関し…

LYH 7.11 型を司るもの、種類

7.11 型を司るもの、種類 Intの種類を調べたいとき、GHCiではどのように入力すればよいか。 1.に対して、値の型を調べるコマンドは何か。 具体型とは何か。具体型はGHCiではどのような記号で表記されるか。 Maybeの種類を答えよ。 Maybe Intの種類を答えよ。…

LYH 7.10 Functor 型クラス

7.10 Functor 型クラス 1.序文 Functorはどのような型クラスか。 Functor型クラスに属している型の例を1つあげよ。 Functor型クラスの実装を示せ。 3.中のfmapを読み、どのような関数か説明せよ。 リストに対するFunctorインスタンス宣言を示せ。 2.MaybeはF…

LYH 7.9 YesとNoの型クラス

7.9 YesとNoの型クラス 様々な型の真理値判定を可能とするためのYesNo型を宣言せよ。 1.に関して、0は偽、それ以外は真と解釈するように数に関してのインスタンスを定義せよ。 空リストは偽、そうでなければ真とするようにリストに関してのインスタンスを定…

LYH 7.8 型クラス 中級講座

7.8 型クラス 中級講座 1. 序文 型クラスはインターフェースのようなものである。型クラスはどのような振る舞いを定義するか。例を3つあげよ。 型クラスの振る舞いは何を定義することで得られるか。 Eqは、(3.1)が出来る値の型クラスである。Eqはどのような…

LYH 7.7 再帰的なデータ構造

代数(的)データ型の3種類を言え。( 1 ) リストは ( 2 ) または ( 3 ) のいずれかの値を取るデータ構造である。代数データ型を使って独自のリスト型 List a を実装せよ。( 4 ) ( 4 ) をレコード構文を用いて書け。( 5 )Cons とは ( 6 ) を言い換えたものであ…

LYH 7.6 型シノニム

新しい型を作る = ( 1 ) キーワード 型同義名(型シノニム)を作る = ( 2 ) キーワード例えば、Stringは以下ように型シノニムとして定義されている。 type String = [Char] 電話帳を定義してみよう。 type PhoneNumber = String type Name = String type Pho…