I는 행렬의 전력을 획득하기 위해 다음 함수가하스켈 행렬 전력 사용하지 IF-else 문
X^0 = 행렬, X = X^1;
X^2 = X'X;
X^3 = XX'X;
X^4 = X 'X X'X ...... 나는 다음과 같은 기능을 시도
다음의 경우-else 문을 사용하지 않고이 기능을 다시 작성
import Numeric.Container
import Numeric.LinearAlgebra
mpow :: Field t => (Matrix t) -> Integer -> (Matrix t)
mpow x 0 = ident $ cols x
mpow x 1 = x
mpow x n =
if (mod n 2) == 0 then
multiply (trans x) (mpow x $ n - 1)
else
multiply x (mpow x $ n - 1)
이 가능합니까?
기본적으로''\ x y -> trans x''tMultiply'''' (또는 tranposition과 multiplication을 결합한 최적화 된 버전)을 취하면 기본적으로 오른쪽으로 재귀 할 수는 없습니까? – leftaroundabout