No older revisions available
No older revisions available
~cpp roots a b c = let det = sqrt(b*b - 4*a*c) twice_a = 2 * a in ((-b+det)/twice_a, (-b+det)/twice_a) minint val = let rnd = round (fst (roots 1.0 1.0 (-2*val) ) ) in (rnd, toRational (rnd*(rnd+1))/2)
1~N 까지 합 구하는 부분을
~cpp mysum 1 = 1 mysum n = n + mysum (n-1)
로 정의했다가 이전에 작성했던데로 gauss 의 방법을 이용하여,
~cpp mysum n = n * (n+1) / 2로 바꾸었더니 type error가 났다. 이유인즉,
~cpp rnd = round (fst (roots 1.0 1.0 (-2*val) ) )에서 rnd의 타입이 Integer로 되었는데 Integer는 다른 값으로 나눠지지 않았다(내가 방법을 모르고 있을수도 있겠지만). haskell wiki를 뒤져 toRational 이라는 함수를 찾았지만 출력되는 모양이 영 마음에 들지 않는다.
HaskellLanguage 에서는 다른 언어와 달리 형 변환이 잘 안된다. 왜 이렇게 만들어놓았을까?