Давайте ответим на один вопрос за раз:
data Cell = Cell CellPos DataType
"но здесь есть проблема, как разместить здесь данные с типом, который зависит от DataType ???"
Поместите этоданные в DataType
:
data DataType = Text String | Number Double | Function CellPos (DataType -> DataType)
"Я хотел просто иметь большой список ячеек и искать в нем указанный столбец / строку и т. д. Но для этого должно быть какое-то лучшее решение - возможно, два двухмерныхмассив, который автоматически настраивает его размер или что-то в этом роде? "
Я предлагаю Map CellPos DataType
.
" Мне придется сохранять / загружать лист в / из файла ... "
Самым простым, вероятно, будет получение Show
и Read
и использование полученных функций вместе с readFile
и writeFile
.Единственное предостережение здесь (относительно DataType
, как определено ранее в этом ответе), состоит в том, что функции не могут быть сериализованы.Чтобы обойти это, создайте более явный тип для функций в ячейках - возможно, абстрактное синтаксическое дерево для некоторого простого языка выражений.