Próbuję napisać serię mocy w Haskell,Moc Series w Haskell
e^x = 1 + x + x^2/2! + x^3/3! + ...
taki sposób, że będzie się umieścić
[1,1,1/2,1/6,...]
tej pory mam:
factorial 0 = 1
factorial n = n * factorial (n - 1)
powerSrs x = 1 : powerSrsFunc[1..] where
powerSrsFunc (p: xs) =
p : powerSrsFunc[y | y <-xs, ((x^y)/(factorial y))]
Rozumiem jednak, że moje pisanie tutaj jest nieprawidłowe. Dostaję taki błąd:
tut08.hs:8:58:
No instance for (Integral Bool)
arising from a use of `^'
Possible fix: add an instance declaration for (Integral Bool)
In the first argument of `(/)', namely `(x^y)'
In the expression: ((x^y)/(factorial y))
In a stmt of a list comprehension: ((x^y)/(factorial y))
tut08.hs:8:62:
No instance for (Fractional Bool)
arising from a use of `/'
Possible fix: add an instance declaration for (Fractional Bool)
In the expression: ((x^y)/(factorial y))
In a stmt of a list comprehension: ((x^y)/(factorial y))
In the first argument of `powerSrsFunc', namely
`[y | y <- xs, ((x^y)/(factorial y))]'
1) Jak piszesz frakcji w Haskell tak, że jest wyjście jak „1/2”?
2) Co to znaczy, gdy mówią: Brak instancji dla (Integral Bool) i (Fractional Bool)?
Czy chodzi o dwa argumenty typu Integral i Bool?
Czy to nie jest integralne i integralne?
Wygląda na to, że część nie działa poprawnie. Wygląda na to, że w pakiecie Data.Ratio jest tylko operator%, a wskaźniki będą wyświetlane jako 2% 3, a nie 2/3. – ali
Ach, myślę, że możesz zamienić go w łańcuch i zastąpić% za pomocą /. Domyślam się, że używa%, aby można go było poprawnie odczytać ponownie. Używanie/byłoby niezgodne ze standardowym używaniem /. –
O, chłopcze, teraz otworzysz całą serię nowych pytań dotyczących Int -> konwersacji smyczkowych. ha ha. – ali