There is a hello world under tests/unit
Ben > -----Original Message----- > From: [email protected] [mailto:[email protected]] On > Behalf Of Alexander Göransson > Sent: Monday, December 20, 2010 2:28 AM > To: [email protected] > Subject: [bitc-dev] Prelude trait name proposal > > Hello! > > New to this list and to BitC. I've grabbed the source in accordance with > http://www.bitc-lang.org/download/index.html > and have been browsing for maybe three hours now :) > If this has been mentioned before, i'd be happy for any links (skimmed > through the last three months mails). > > > I'm a haskell coder myself, and seeing how bitc seems to be awesome > I'd hate for it to go down any "wrong" paths. > One thing that bother me (and many haskellers) is the fact that the > typeclass > > > class (Eq a, Show a) => Num a where > > (+) :: a -> a -> a > > (*) :: a -> a -> a > > (-) :: a -> a -> a > > negate :: a -> a > > abs :: a -> a > > signum :: a -> a > > fromInteger :: Integer -> a > > which is equivalent to > > > where Ord('a) > > trait Arith('a) { > > _+_ : fn('a, 'a) -> 'a > > _-_ : fn('a, 'a) -> 'a > > _*_ : fn('a, 'a) -> 'a > > _/_ : fn('a, 'a) -> 'a > > negate : fn('a) -> 'a > > } > > (I assume that implementation-wise it's an all-or-none kind of deal) > Now, getting back to the annoying thing with haskell: The function '+' is > taken! > Consider inked list concatenation, this is done with '++' which has > this type signature: > > > (++) :: [a] -> [a] -> [a]. > > But there are many other types for which concatenation makes sense! > For example the in ByteString code it is not uncommon to see > > bs0 `B.append` bs1 `B.append` bs2 > where it could have been > > > bs0 ++ bs1 ++ bs2 > > The generalized behaviour desired can be found, but with very > unsatisfying names: > > class Monoid a where > > mempty :: a > > mappend :: a -> a -> a > > mconcat :: [a] -> a > > > > What i propose is a collection of traits instead of 'Numeric' is > something like this (restrictions on 'a removed for brevity): > > > trait Additive('a) { > > _+_ : fn('a, 'a) -> 'a > > zero : a > > } > > > trait Subtractive('a) { > > _-_ : fn('a, 'a) -> 'a > > neg : fn('a) -> 'a // maybe declared in its own trait > "Negative" :) > > } > > > trait Multiplicative('a) { > > _*_ : fn('a, 'a) -> 'a > > one : a > > } > > > trait Divisible('a) { > > _/_ : fn('a, 'a) -> 'a > > } > > Then lists and a lot of other types could easily be instances of > 'Additive'. > > > Here's a pretty thorough page on about it: > http://www.haskell.org/haskellwiki/Context_alias > > > // Alexander > > > PS. If someone could tell me how i write and compile a hello world > program, that'd be swell :) DS. > _______________________________________________ > bitc-dev mailing list > [email protected] > http://www.coyotos.org/mailman/listinfo/bitc-dev > No virus found in this incoming message. > Checked by AVG - www.avg.com > Version: 9.0.872 / Virus Database: 271.1.1/3318 - Release Date: 12/19/10 > 03:34:00 _______________________________________________ bitc-dev mailing list [email protected] http://www.coyotos.org/mailman/listinfo/bitc-dev
