Как вообще определить вращение и отражение вектора, если функция будет работать в измерениях n в Haskell?
В настоящее время у меня есть точечный продукт, нормализация и проекция, но я застрял на отражении и вращении.
data Vector s a = Vector {len::s,arr::a}
normalize :: Vector s a → Vector s a
normalize = toVector . uncurry (zipWith (/))
. (id&&&(repeat . sqrt . sum . map (^2)))
. fromVector
dot :: Vector s a → Vector s a → a
dot v = sum ∘ zipWith (*) (fromVector v) ∘ fromVector
project :: Vector s a → Vector s a → Vector s a
project v = toVector ∘ uncurry (zipWith (*))
∘ (fromVector&&&(repeat ∘ (v`dot`)))
Я искал в течение нескольких дней, но кажется, что использование Haskell для понимания математики иногда может вызывать проблемы, когда нет четкого кода (или вообще нет кода), а единственные учебники по n-мерным векторам выходят за рамки моих знаний в математике.
x
в области видимости, если вы посмотрите на определениеdot
- также: речь идет только о реализации или у вас есть проблемы с поиском математики указанного операции? Если да, можете ли вы добавить ожидаемые подписи? - person Random Dev   schedule 29.02.2016