2012-01-13 8 views
1

のように秀でるI次のクエストがあります。データ - rowsとcols

私は私がExcelシートのようなものを作成することができますHaskellの中にプログラムを記述する必要があります。 列と行があり、各セルには数値や文字列、またはある関数(合計、平均、乗算など)を格納できます。

:など

加算され、セルのリストをパラメータとして各関数は、私はこのような何かを考えていた...今、私は私のプログラムにこのデータを保存する方法を把握しようとしています を取ります

data CellPos = CellPos Int Int -- row and col of Cell 
data DataType = Text | String | SumFunction | ...... deriving (Enum) 

data Cell = Cell CellPos DataType -- but here is a problem , how to put here data with type which depends on DataType??? 

私はちょうどなど

Cellの大きなリストを持っており、指定した列/行のためにそれで検索したかった。しかし、このためのいくつかのよりよい解決策がなければならない - 自動その大きさや何かを調整するかもしれないいくつかの二次元配列?

data Cell = Cell CellPos DataType 

「が、ここに、ここで配置する方法、問題です:私は/ファイルからシートを読み込む/保存する必要があります

...

答えて

6

はのは、一度に1つの質問に答えるみようDataTypeに依存するタイプのデータ??? " DataTypeにデータ

入れ:

data DataType = Text String | Number Double | Function CellPos (DataType -> DataType) 

は「私はセルの大きなリストを持っており、指定した列/行などのためにそれで検索しかし、このためのいくつかのよりよい解決策が存在しなければならないと思った - おそらくいくつかのそのサイズや何かを自動的に調整する2つのディメンション配列?

私はMap CellPos DataTypeを提案します。

「私は保存/ ...ファイルへ/からシートをロードする必要があります」

最も簡単な方法は、おそらくShowReadを導出し、readFilewriteFileと一緒に結果の関数を使用することになります。ここでの唯一の注意点(この回答の先に定義したDataTypeに関して)は、関数を直列化できないということです。この問題を回避するには、セル内の関数のためのより明示的な型を作成します。単純な式言語の抽象構文木でしょう。

+0

しかし、私はどのようにデータをメモリに保存し、それを変更/更新することができ、オンデマンドでファイルに書き込むことができますか? – user606521

+0

@ user606521ここに新しい質問をいくつか具体的な詳細を開いてください。どのようなコードを試しましたか?あなたは何をしたいのですか?代わりに何が起こったのですか?または、何を書いておきたいコードを書いてしまったのですか? –