2016-07-22 3 views
0

私はSICPのthis問題を解決しようとしています。 リンクにも解決策があります。 Link to the problem's underlying concept in SICPC++のスキームのタグ付きデータの代替手段

ここに問題の説明があります。

飽くことのない企業、株式会社、世界中 を位置独立した部門の多数からなる非常に分散化コングロマリット 会社です。同社のコンピュータ設備は、 という巧妙なネットワークインターフェース方式によって相互接続されており、 はネットワーク全体をどのユーザーにも単一のコンピュータとして見せるようになっています。分割ファイルから管理情報を抽出する ネットワークの能力を活用するために、彼女の最初の試みで、 飽くことのない社長、 は、すべての分割ファイルは、スキーム内のデータ構造、特定のデータ として を実施してきたが、それを発見するために失望です使用される構造は部門ごとに異なります。部門 の既存の自治を維持しながら、本社のニーズを満たすファイル を統合する戦略を検索するために、部門の会議が急いで呼び出されます。

データ指向の プログラミングでこのような戦略をどのように実装できるかを示してください。例として、各部門の担当者 レコードが、従業員の名前にキーを付けたレコードセット を含む1つのファイルで構成されているとします。セットの構造は、 区分ごとに異なります。さらに、各従業員の記録自体は、 (アドレスと給与などの識別子の下にキー情報が埋め込まれた の情報を含む)が設定されています(部門ごとに構造化されています)。 内:

a。指定された従業員のレコードから 指定された従業員のレコードを取得するget-recordプロシージャを本社用に実装します。 手順は、どの部門のファイルにも適用可能です。 各部門のファイルをどのように構成するべきかを説明してください。特に、 タイプの情報を入力する必要がありますか?

b。本部のために、どの部門の 人事部ファイルから与えられた従業員の記録から 給与情報を返す給与手続きを実施する。 この操作を行うには、レコードをどのように構成する必要がありますか?

c。本部のために従業員の検索手順を実装します。この は、与えられた 従業員の記録のためにすべての部門のファイルを検索し、そのレコードを返す必要があります。この手順では、従業員の名前とすべての部門のファイルのリストを 引数として取ると仮定します。

d。欲しいものが新しい会社を引き継ぐ場合、新しい人材情報を セントラルシステムに組み込むためには、どのような変更を にする必要がありますか?

問題のコンセプトは、タグ付きデータを中心に展開されています。 この問題の解決策は、明らかに、ペアを使用して実装された基礎となるテーブルを使用するgetおよびputメソッドを使用しています。
この問題は第2章にあり、著者は明示的に第3章でテーブルが導入されると明示的に述べています。getとputのメソッドは存在していると仮定されます[スクリプトを実装するためにguileスキームを使用します]。

このように言えば、STLコンテナとアルゴリズムを使用してC++ 1yのタグ付きデータに似た概念を実装する方法を知りたいと思います。また、基になるテーブルに相当するクラスを開発し、それをC++ 1yでタグ付きデータに完全に合わせるように操作します。

P.S.コードは必要ありません。私がC++ 1yのlamda関数を使ってSchemeの関数型プログラミングの概念を補うためにデータを操作しようとするために、C++で問題を可視化する概念。

+0

'std :: map '?データ型が限られている場合は、 'std :: variant'などです。 (いずれもバリアントはC++ 17ですが、C++ 98以降で実装可能です.Boostにはどちらか一方があります) – Yakk

答えて

0

私の意見では、「タグ付きデータ」は抽象的な概念です。この抽象化を実装する任意の表現を選択できます。たとえば、独自の「Put」メソッドと「Get」メソッドを定義できます。

+0

TaggedDataはシンボルです、そうですか?彼らはそれ自体のデータ型の一種です。あなたは詳しく説明できますか?あなたの言ったことはあまり明確ではありません。 –