On Mon, Jul 7, 2014 at 10:49 PM, Loïc Maury <[email protected]> wrote:
> > > > On Mon, Jul 7, 2014 at 10:13 PM, Loïc Maury <[email protected]> wrote: > >> >> >> >> On Mon, Jul 7, 2014 at 9:58 PM, Luke Immes <[email protected]> wrote: >> >>> OK, now I will use 'rem' vs. 'mod' >>> Using trial division for determining range of primes, code below works, >>> except for the ending message. >>> Other 'clean' programs regarding lists have worked perfectly. >>> Not sure what to make of the message. >>> Any suggestions? Thanks. >>> /* >>> clean 497>./primes >>> [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97Run >>> time error, rule 'prmFilter' in module 'primes' does not match >>> Execution: 0.00 Garbage collection: 0.00 Total: 0.00 >>> clean 497> >>> */ >>> module primes >>> import StdEnv, StdInt, StdList, StdClass >>> >>> prmFilter :: Int [Int] -> [Int] >>> prmFilter prime [n:rst] >>> | n rem prime == 0 = prmFilter prime rst /* use rem instead of mod */ >>> | otherwise = [n:prmFilter prime rst] >>> >> > I think you have forger a pattern matching test : > Sorry, miss, forget > maybe can help -> prmFilter prime [] = [] > > best > > Loic > > >>> primes :: [Int] -> [Int] >>> primes [prime:rst] = [prime:primes (prmFilter prime rst)] >>> >>> Start :: [Int] >>> Start = primes [2..100] >>> >> >> It's just for the test ? >> because you can use rem instead of mod, in your first first code ? >> >> Best >> >> Loic >> >> >>> >>> >>> On Mon, Jul 7, 2014 at 3:04 PM, Loïc Maury <[email protected]> wrote: >>> >>>> Hello Luke and Community, >>>> >>>> same error, I'am on Windows 7 with clean ide. >>>> >>>> It seem, that mod is declared on StdOverloaded : >>>> >>>> // Additional functions for integer arithmetic: >>>> instance mod Int // arg1 modulo arg2 >>>> instance rem Int // remainder after integer division >>>> instance gcd Int // Greatest common divider >>>> >>>> There are another file StdInt, we have rem and gcd : >>>> // Additional functions for integer arithmetic: >>>> >>>> instance rem Int >>>> where >>>> (rem) a b >>>> = code inline { >>>> remI >>>> } >>>> >>>> instance gcd Int >>>> where >>>> gcd x y = gcdnat (abs x) (abs y) >>>> where >>>> gcdnat x 0 = x >>>> gcdnat x y = gcdnat y (x rem y) >>>> >>>> but it seem, unfortunately no mod ? >>>> >>>> Maybe a professional of clean can answer better than I do. >>>> >>>> Best >>>> >>>> Loic >>>> >>>> >>>> On Mon, Jul 7, 2014 at 5:53 PM, Luke Immes <[email protected]> wrote: >>>> >>>>> Documentation makes reference to required modules, but 'mod' is >>>>> still not working. >>>>> >>>>> Any suggestions? Thanks. >>>>> >>>>> >>>>> clean 496>cat mymod.icl >>>>> >>>>> module mymod >>>>> >>>>> import StdEnv, StdInt, StdClass >>>>> >>>>> Start :: [Int] >>>>> >>>>> Start = [x*x \\ x <- [1..10] | x mod 2 == 0] >>>>> >>>>> --------- >>>>> >>>>> clean 495>make mymod >>>>> >>>>> clm -h 20m mymod -o mymod >>>>> >>>>> Compiling mymod >>>>> >>>>> Overloading error [mymod.icl,4,c;4;14]: "mod" no instance available of >>>>> type Int >>>>> >>>>> make: *** [mymod] Error 1 >>>>> >>>>> _______________________________________________ >>>>> clean-list mailing list >>>>> [email protected] >>>>> http://mailman.science.ru.nl/mailman/listinfo/clean-list >>>>> >>>>> >>>> >>> >> >
_______________________________________________ clean-list mailing list [email protected] http://mailman.science.ru.nl/mailman/listinfo/clean-list
