Я разрабатываю проект на .NET, часть которого я буду управлять временными рядами.
Поскольку основная часть проекта была реализована на C #, я набросал объектно-ориентированный дизайн, унаследованный от SortedDictionary
.
Тем не менее, я был влюблен в функциональное программирование в течение последних нескольких лет, и я подумал, что, поскольку этот компонент будет подчиняться довольно диким и интенсивным алгоритмам, я хотел бы обрабатывать его параллельно, и я бы наслаждайтесь неизменной структурой.
Я думал о том, чтобы спроектировать его на F #, используя определение типа следующим образом:
type TimeSeries<'t> = (DateTime * 't) seq
и продолжайте с ним.
Его преимущество заключается в том, что он неизменяем, а параллельное выполнение будет довольно простым с использованием модуля F # Async
. Я также мог бы использовать функцию единиц измерения F #.
Я просто немного боюсь использовать результаты вычислений на C #, и мне было интересно, может ли кто-нибудь, кто уже пробовал, дать мне обратную связь о результате на практике.
Было ли это легко использовать в конце концов или было слишком сложно переключиться с C # на F #?
Разве неизменность коллекции не является проблемой эффективности при увеличении временного ряда?
Будет ли Я смогу сохранить общий тип, когда попытаюсь разделить элементы, или мне придется довольно быстро переключиться на TimeSeries
с моими функциями?
Если я хочу использовать алгоритм на основе C # о временных рядах для некоторых функций, сделает ли это всю эту идею бесполезной?
У вас есть ссылки на исследования, проведенные по эффективности функциональной реализации временных рядов?