Я новичок в F # и Haskell и реализую проект, чтобы определить, на каком языке я бы предпочел уделять больше времени.Ограничения типа для размерности векторов в F # и Haskell (зависимые типы)
У меня есть множество ситуаций, когда я ожидаю, что заданный численный тип задает размеры на основе параметров, заданных функции верхнего уровня (т. Е. Во время выполнения). Например, в этом фрагменте кода F #, у меня есть
type DataStreamItem = LinearAlgebra.Vector<float32>
type Ball =
{R : float32;
X : DataStreamItem}
и я ожидаю, все экземпляры типа DataStreamItem
иметь D
размеры.
Мой вопрос в интересах разработки алгоритмов и отладки поскольку такие формы-mismatche жуков может быть головная боль придавить, но должно быть не проблема, когда алгоритм вверх и работает:
Есть ли способ в F # или Haskell, чтобы ограничить DataStreamItem
и/или Ball
иметь размеры D
? Или мне нужно прибегать к сопоставлению шаблонов при каждом расчете?
Если это так, есть ли хорошие, легкие парадигмы, чтобы поймать такие нарушения ограничений, как только они появятся (и которые можно удалить, когда производительность критическая)?
Edit:
Чтобы уточнить, в каком смысле D
ограничиваемый:
D
определяется таким образом, что если вы выразили алгоритм функции main(DataStream)
как вычисление графика, все промежуточные расчеты будет зависеть от размера D
для исполнения main(DataStream)
. Простейший пример, который я могу думать будет дот-продукт M
с DataStreamItem
: размерность DataStream
будет определять создание параметров размерности M
Другой Edit:
Через неделю, я считаю, следующий блог с изложением именно то, что я искал в зависимых типов в Haskell:
https://blog.jle.im/entry/practical-dependent-types-in-haskell-1.html
And A nother: В этом номере reddit содержится некоторое обсуждение зависимых типов в Haskell и содержится ссылка на довольно интересный номер dissertation proposal Р. Эйзенберга.
Последний вопрос: «На каком языке я должен учиться?» является примером альтернативных вопросов здесь, на StackOverflow, поскольку он основан преимущественно на мнениях. – chi
@chi Я знаю, я написал это с некоторой иронией, но, возможно, смайлик не передает это достаточно убедительно. – user2805751
Помимо проблемы аспекта языкового конкурса, все еще немного неясно, о чем вы на самом деле спрашиваете. Действительно ли 'D' фиксируется во время компиляции? – leftaroundabout