読者です 読者をやめる 読者になる 読者になる

What we talk about when we talk about Technology

技術について語ります。

Design Recipe

一般的な再帰に対するデザインレシピ

前回の再帰に対するデザインレシピはさらっとした書き方であった。 データの構造自体が再帰を含む場合(リスト等)であれば、 その書き方で十分対応できることが多いが、 一般的なデータ構造の場合はもう少し掘り下げたガイドラインがないと、 再帰を含む関数…

デザインレシピ実例

整数のリストから要素の合計値を求める関数を例に、 デザインレシピの実例を示す。 1.データ定義 (* int list は - [] 空リスト、あるいは - first :: rest 最初の要素が first で残りのリストが rest (rest が自己参照のケース) という形 *) 2.目的 (* 目的…

デザインレシピ完全版

これまでのデザインレシピに再帰関数の場合を加えた、 完全版のデザインレシピは以下の通り。 1.データ定義<<extension: 入出力にデータ定義を伴う場合>> 入力または出力で使用するデータを定義する。 再帰的なデータ型(リストなど)である場合、自己参照のケースを付記する。 2.目的 作成する関数の目</extension:>…

構造データに対するデザインレシピ

関数が構造(組やレコードやリスト等)を含む場合、 テンプレート項目を本体の前に加える。 1.目的 2.例 3.テンプレート 構造の中身を取り出すmatch文を作成する。 4.本体 5.テスト

条件分岐を伴う場合のデザインレシピ

関数に条件分岐が伴う場合、拡張として条件分岐のデザインレシピを使う。 例 場合分けのパターンを列挙し、すべての場合について例を作成する。 特に境界値の周辺の例に気をつける。 本体(1) 本体作成の前に、場合分けの条件を特定する。 条件をもとに関数の…

関数作成のデザインレシピ

1.目的 関数の役割、関数の型(引数・返り値)、関数名を決定する。 2.例 具体的な入力と、それに対する出力の期待値の組を(幾つか)作成する。 3.本体 関数の本体を実装する。 4.テスト 例をもとにテストを作成し、成功することを確認する。