0

I have been trying to solve this problem in SICP. The link also has a solution. Link to the problem's underlying concept in SICP

Here is the problem description.

Insatiable Enterprises, Inc., is a highly decentralized conglomerate company consisting of a large number of independent divisions located all over the world. The company’s computer facilities have just been interconnected by means of a clever network-interfacing scheme that makes the entire network appear to any user to be a single computer. Insatiable’s president, in her first attempt to exploit the ability of the network to extract administrative information from division files, is dismayed to discover that, although all the division files have been implemented as data structures in Scheme, the particular data structure used varies from division to division. A meeting of division managers is hastily called to search for a strategy to integrate the files that will satisfy headquarters’ needs while preserving the existing autonomy of the divisions.

Show how such a strategy can be implemented with data-directed programming. As an example, suppose that each division’s personnel records consist of a single file, which contains a set of records keyed on employees’ names. The structure of the set varies from division to division. Furthermore, each employee’s record is itself a set (structured differently from division to division) that contains information keyed under identifiers such as address and salary. In particular:

a. Implement for headquarters a get-record procedure that retrieves a specified employee’s record from a specified personnel file. The procedure should be applicable to any division’s file. Explain how the individual divisions’ files should be structured. In particular, what type information must be supplied?

b. Implement for headquarters a get-salary procedure that returns the salary information from a given employee’s record from any division’s personnel file. How should the record be structured in order to make this operation work?

c. Implement for headquarters a find-employee-record procedure. This should search all the divisions’ files for the record of a given employee and return the record. Assume that this procedure takes as arguments an employee’s name and a list of all the divisions’ files.

d. When Insatiable takes over a new company, what changes must be made in order to incorporate the new personnel information into the central system?

The problem's concept revolves around tagged data. This problem's solution apparently uses get and put methods which use an underlying table implemented by using pairs.
This problem is in Chapter 2 and author also explicitly states that tables will be introduced in chapter 3. The methods of get and put should be assumed that they exist[I use guile scheme to implement the scripts].

Having said this, I would like to know how can I implement the concept similar to tagged data in C++1y using STL containers and algorithms. Also, develop a class equivalent to underlying table and manipulate it to suit tagged data entirely in C++1y.

P.S. code is not required. Concept to visualize the problem in C++1y so that I can try using lamda functions of C++1y to manipulate data to compensate for functional programming concepts of Scheme.

ildjarn
  • 62,044
  • 9
  • 127
  • 211
Tarun Maganti
  • 3,076
  • 2
  • 35
  • 64
  • A `std::map`? Well, if data types are limited, `std::variant` or whatever. (Both any and variant are C++17, but can be implemented in C++98 or later. Boost has one of either.) – Yakk - Adam Nevraumont Jul 24 '16 at 04:06

1 Answers1

0

In my opinion, 'Tagged Data' is an abstract conception. You can choose any representation to implement this abstraction. For example, you can define your own 'Put' and 'Get' method.

jiangpeng
  • 1
  • 1
  • TaggedData are symbols, right? They are a kind of data type in their own right. Could you elaborate? It is not very clear what you said. – Tarun Maganti Mar 28 '17 at 09:18