Send Beginners mailing list submissions to beginners@haskell.org To subscribe or unsubscribe via the World Wide Web, visit http://www.haskell.org/mailman/listinfo/beginners or, via email, send a message with subject or body 'help' to beginners-requ...@haskell.org
You can reach the person managing the list at beginners-ow...@haskell.org When replying, please edit your Subject line so it is more specific than "Re: Contents of Beginners digest..." Today's Topics: 1. Re: Average of numeric list (Daniel Fischer) 2. Re: Average of numeric list (Nadav Chernin) 3. Re: Looking for some pro bono haskell work (Patrick Lynch) 4. Re: Looking for some pro bono haskell work (Patrick Lynch) 5. Re: Looking for some pro bono haskell work (Bryce Verdier) ---------------------------------------------------------------------- Message: 1 Date: Tue, 5 Apr 2011 13:56:50 +0200 From: Daniel Fischer <daniel.is.fisc...@googlemail.com> Subject: Re: [Haskell-beginners] Average of numeric list To: Nadav Chernin <nadavcher...@gmail.com> Cc: beginners@haskell.org Message-ID: <201104051356.51116.daniel.is.fisc...@googlemail.com> Content-Type: Text/Plain; charset="utf-8" On Tuesday 05 April 2011 11:57:32, Nadav Chernin wrote: > How can i know when casting of types maked by compiler and when > programmer must to do it? Generally, there are no implicit type conversions in Haskell, so you always have to do it explicitly. An exception are numeric literals, an integer literal (in source code or at the ghci/hugs prompt) stands for fromInteger (integerValueParsedFromLiteral) -- fromInteger :: Num n => Integer -> n and a floating-point literal (like 1.234e56) stands for fromRational (rationalParsedFromLiteral) -- fromRational :: Fractional a => Rational -> a Unless my memory fails, those are the only implicit conversions the language report specifies. In GHC (I don't know which other compilers, if any, implement it), you can turn on the OverloadedStrings language extension to get overloaded string literals (for instances of the IsString class), so "this" could be a String , a ByteString or a Text (and some others), provided the relevant modules are in scope. Other language extensions providing compiler-generated conversions may exist (now or in future), but I'm not aware of any. A different, but not unrelated, issue is polymorphism (with type inference). When you use polymorphic expressions - like [], Nothing, (return True), (realToFrac pi) - the compiler uses the context in which the expression occurs to infer the type at which the expression is used. If that doesn't yield a monomorphic type, under some circumstances the type gets defaulted (http://www.haskell.org/onlinereport/haskell2010/haskellch4.html#x10-790004.3.4), or you get a compile error since the compiler couldn't determine what to do. If you don't use any conversion functions, mean0 xs = sum xs / length xs, the compiler infers - xs :: Num n => [n] (from sum :: Num n => [n] -> n) - sum xs :: Fractional f => f (from (/) :: Fractional f => f -> f -> f) - combining those : xs :: (Num c, Fractional c) => [c] Num is a superclass of Fractional, so the constraint can be simplified, giving - xs :: Fractional c => [c] Then (length xs :: Int), inferred from (length :: [a] -> Int), as the second argument of (/) forces c = Int, giving the type mean0 :: Fractional Int => [Int] -> Int Normally you don't have a Fractional instance for Int in scope, so the compilation would fail with a "No instance ..." error. If you had such an instance in scope, the superfluous because fulfilled constraint would be removed, giving mean0 :: [Int] -> Int. Now, inserting the fromIntegral conversion in the second argument, mean1 xs = sum xs / fromIntegral (length xs) the first part remains unchanged, resulting in xs :: Fractional f => [f], then (sum xs :: f -- for that same, as yet undetermined Fractional type f) and fromIntegral's result must have the same type f. Since fromIntegral :: (Integral i, Num n) => i -> n, length xs :: Int, Int is an instance of Integral and Num is more general than Fractional, fromIntegral (length xs) can have that type, enabling the compiler to pick the right fromIntegral as soon as it knows f. Overall, mean1 :: Fractional f => [f] -> f, the type f can be determined by passing a list of specific type or using the result at specific type. Inserting a conversion for the sum, say realToFrac, mean2 xs = realToFrac (sum xs) / fromIntegral (length xs) changes the constraint on the type of xs' elements, now it need no longer be a suitable argument for (/) [Fractional], but for realToFrac [Real]. (realToFrac $ sum xs) has to be the same Fractional type as (fromIntegral $ length xs) but can be any Fractional type, giving mean2 :: (Real r, Fractional f) => [r] -> f r can only be determined by passing an argument of specific type, f only by using the result at a specific type. > > On Tue, Apr 5, 2011 at 12:14 PM, Daniel Fischer < > > daniel.is.fisc...@googlemail.com> wrote: > > On Tuesday 05 April 2011 10:38:37, Nadav Chernin wrote: > > > Why only "length as" we must to cast? Why "sum as", that have type > > > Integer can be used in (/). > > > > > > :t (/) > > > > > > (/) :: (Fractional a) => a -> a -> a > > > > No, sum as has the type of as's elements, > > > > sum :: Num a => [a] -> a > > > > So the use of (/) refines the constraint from (Num a) to (Fractional > > a). if you want it to work on Integers too, > > you'd get > > > > mean :: (Real a, Fractional b) => [a] -> b > > mean xs = realToFrac (sum xs) / (fromIntegral $ length xs) ------------------------------ Message: 2 Date: Tue, 5 Apr 2011 15:08:59 +0300 From: Nadav Chernin <nadavcher...@gmail.com> Subject: Re: [Haskell-beginners] Average of numeric list To: Daniel Fischer <daniel.is.fisc...@googlemail.com> Cc: beginners@haskell.org Message-ID: <BANLkTi=dqov5cd62xgwebxccnl+rlfz...@mail.gmail.com> Content-Type: text/plain; charset="iso-8859-1" Thank you very much Nadav Chernin On Tue, Apr 5, 2011 at 2:56 PM, Daniel Fischer < daniel.is.fisc...@googlemail.com> wrote: > On Tuesday 05 April 2011 11:57:32, Nadav Chernin wrote: > > How can i know when casting of types maked by compiler and when > > programmer must to do it? > > Generally, there are no implicit type conversions in Haskell, so you always > have to do it explicitly. > An exception are numeric literals, an integer literal (in source code or at > the ghci/hugs prompt) stands for > > fromInteger (integerValueParsedFromLiteral) > -- fromInteger :: Num n => Integer -> n > > and a floating-point literal (like 1.234e56) stands for > > fromRational (rationalParsedFromLiteral) > -- fromRational :: Fractional a => Rational -> a > > Unless my memory fails, those are the only implicit conversions the > language report specifies. In GHC (I don't know which other compilers, if > any, implement it), you can turn on the OverloadedStrings language > extension to get overloaded string literals (for instances of the IsString > class), so "this" could be a String , a ByteString or a Text (and some > others), provided the relevant modules are in scope. > > Other language extensions providing compiler-generated conversions may > exist (now or in future), but I'm not aware of any. > > A different, but not unrelated, issue is polymorphism (with type > inference). > When you use polymorphic expressions - like [], Nothing, (return True), > (realToFrac pi) - the compiler uses the context in which the expression > occurs to infer the type at which the expression is used. > If that doesn't yield a monomorphic type, under some circumstances the type > gets defaulted > ( > http://www.haskell.org/onlinereport/haskell2010/haskellch4.html#x10-790004.3.4 > ), > or you get a compile error since the compiler couldn't determine what to > do. > > If you don't use any conversion functions, > > mean0 xs = sum xs / length xs, > > the compiler infers > > - xs :: Num n => [n] > (from sum :: Num n => [n] -> n) > - sum xs :: Fractional f => f > (from (/) :: Fractional f => f -> f -> f) > - combining those : xs :: (Num c, Fractional c) => [c] > Num is a superclass of Fractional, so the constraint can be simplified, > giving > - xs :: Fractional c => [c] > > Then (length xs :: Int), inferred from (length :: [a] -> Int), as the > second argument of (/) forces c = Int, giving the type > > mean0 :: Fractional Int => [Int] -> Int > > Normally you don't have a Fractional instance for Int in scope, so the > compilation would fail with a "No instance ..." error. If you had such an > instance in scope, the superfluous because fulfilled constraint would be > removed, giving mean0 :: [Int] -> Int. > > Now, inserting the fromIntegral conversion in the second argument, > > mean1 xs = sum xs / fromIntegral (length xs) > > the first part remains unchanged, resulting in > xs :: Fractional f => [f], > > then (sum xs :: f -- for that same, as yet undetermined Fractional type f) > and fromIntegral's result must have the same type f. > Since > > fromIntegral :: (Integral i, Num n) => i -> n, > > length xs :: Int, Int is an instance of Integral and Num is more general > than Fractional, fromIntegral (length xs) can have that type, enabling the > compiler to pick the right fromIntegral as soon as it knows f. Overall, > > mean1 :: Fractional f => [f] -> f, > > the type f can be determined by passing a list of specific type or using > the result at specific type. > > Inserting a conversion for the sum, say realToFrac, > > mean2 xs = realToFrac (sum xs) / fromIntegral (length xs) > > changes the constraint on the type of xs' elements, now it need no longer > be a suitable argument for (/) [Fractional], but for realToFrac [Real]. > (realToFrac $ sum xs) has to be the same Fractional type as > (fromIntegral $ length xs) but can be any Fractional type, giving > > mean2 :: (Real r, Fractional f) => [r] -> f > > r can only be determined by passing an argument of specific type, f only by > using the result at a specific type. > > > > > On Tue, Apr 5, 2011 at 12:14 PM, Daniel Fischer < > > > > daniel.is.fisc...@googlemail.com> wrote: > > > On Tuesday 05 April 2011 10:38:37, Nadav Chernin wrote: > > > > Why only "length as" we must to cast? Why "sum as", that have type > > > > Integer can be used in (/). > > > > > > > > :t (/) > > > > > > > > (/) :: (Fractional a) => a -> a -> a > > > > > > No, sum as has the type of as's elements, > > > > > > sum :: Num a => [a] -> a > > > > > > So the use of (/) refines the constraint from (Num a) to (Fractional > > > a). if you want it to work on Integers too, > > > you'd get > > > > > > mean :: (Real a, Fractional b) => [a] -> b > > > mean xs = realToFrac (sum xs) / (fromIntegral $ length xs) > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://www.haskell.org/pipermail/beginners/attachments/20110405/68e99cc3/attachment-0001.htm> ------------------------------ Message: 3 Date: Tue, 05 Apr 2011 09:45:12 -0400 From: "Patrick Lynch" <kmandpjly...@verizon.net> Subject: Re: [Haskell-beginners] Looking for some pro bono haskell work To: "aditya siram" <aditya.si...@gmail.com> Cc: beginners@haskell.org Message-ID: <B289CA9F43874FACA997D1829D6487CE@UserPC> Content-Type: text/plain; format=flowed; charset=iso-8859-1; reply-type=original Good morning, Thanks for the advice. I sent an email to Zvon and volunteered to help them with the examples of Haskell functions in their "Haskell Reference Page" The projects that I envisage are: - I tried to get TK installed but was unable to do so, if someone is working this install, I would be willing to test it for them... - If anyone is working on a web front-end to Haskell, I would be willing to participate... Good day ----- Original Message ----- From: "aditya siram" <aditya.si...@gmail.com> To: "Patrick Lynch" <kmandpjly...@verizon.net> Cc: <beginners@haskell.org> Sent: Monday, April 04, 2011 5:19 PM Subject: Re: [Haskell-beginners] Looking for some pro bono haskell work >I would pick a project and contribute a patch to it, or start one of your >own. > -deech > > On Mon, Apr 4, 2011 at 4:17 PM, Patrick Lynch <kmandpjly...@verizon.net> > wrote: >> Good afternoon, >> I've read all the books and am looking for some pro bono Haskell >> Development >> work... >> If you have some, please email me... >> Thanks >> _______________________________________________ >> Beginners mailing list >> Beginners@haskell.org >> http://www.haskell.org/mailman/listinfo/beginners >> >> > ------------------------------ Message: 4 Date: Tue, 05 Apr 2011 10:04:19 -0400 From: "Patrick Lynch" <kmandpjly...@verizon.net> Subject: Re: [Haskell-beginners] Looking for some pro bono haskell work To: "aditya siram" <aditya.si...@gmail.com> Cc: beginners@haskell.org Message-ID: <4E9C4238801F45C99253CEB0704B2568@UserPC> Content-Type: text/plain; format=flowed; charset=iso-8859-1; reply-type=response ...one more project... I tried to understand Category Theory but was unable to do so... I tried reading three books in regard to it and can understand the definition of Category...but couldn't follow any of these books past the first chapter and was unable to do any of the exercises in them... However, I did see a few links that 'graphically' showed a Category and another that showed some categories and how they were implemented in Haskell - these made the most sense to me... Since categories are the basis for Functors, Monoids and Monads - which are extensively used in Haskell and implicitly used, I think, in Linq - I would be very willing to participate in a project that showed categories and how they are implemented in Haskell... Just a thought... Ps I am an independent software consultant [been doing it for 30+ years]. I did a market evaluation of Haskell and Linq and found the following: - there are page after page of Ling/C# jobs... - I only saw 1 Haskell job... It 'begs the question': is some commercial organization going to implement Haskell as a product [I don't think it will be Microsoft, since they have introduced F#]... ----- Original Message ----- From: "Patrick Lynch" <kmandpjly...@verizon.net> To: "aditya siram" <aditya.si...@gmail.com> Cc: <beginners@haskell.org> Sent: Tuesday, April 05, 2011 9:45 AM Subject: Re: [Haskell-beginners] Looking for some pro bono haskell work > Good morning, > Thanks for the advice. > I sent an email to Zvon and volunteered to help them with the examples of > Haskell functions in their "Haskell Reference Page" > The projects that I envisage are: > - I tried to get TK installed but was unable to do so, if someone is > working this install, I would be willing to test it for them... > - If anyone is working on a web front-end to Haskell, I would be > willing to participate... > Good day > > ----- Original Message ----- > From: "aditya siram" <aditya.si...@gmail.com> > To: "Patrick Lynch" <kmandpjly...@verizon.net> > Cc: <beginners@haskell.org> > Sent: Monday, April 04, 2011 5:19 PM > Subject: Re: [Haskell-beginners] Looking for some pro bono haskell work > > >>I would pick a project and contribute a patch to it, or start one of your >>own. >> -deech >> >> On Mon, Apr 4, 2011 at 4:17 PM, Patrick Lynch <kmandpjly...@verizon.net> >> wrote: >>> Good afternoon, >>> I've read all the books and am looking for some pro bono Haskell >>> Development >>> work... >>> If you have some, please email me... >>> Thanks >>> _______________________________________________ >>> Beginners mailing list >>> Beginners@haskell.org >>> http://www.haskell.org/mailman/listinfo/beginners >>> >>> >> > > > _______________________________________________ > Beginners mailing list > Beginners@haskell.org > http://www.haskell.org/mailman/listinfo/beginners > ------------------------------ Message: 5 Date: Tue, 05 Apr 2011 08:45:49 -0700 From: Bryce Verdier <bryceverd...@gmail.com> Subject: Re: [Haskell-beginners] Looking for some pro bono haskell work To: beginners@haskell.org Message-ID: <4d9b392d.6060...@gmail.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Patrick, Since you are interested in helping a haskell based web front-end project, have you thought about contacting the Yesod project? Bryce On 04/05/2011 07:04 AM, Patrick Lynch wrote: > ...one more project... > > I tried to understand Category Theory but was unable to do so... > I tried reading three books in regard to it and can understand the > definition of Category...but couldn't follow any of these books past > the first chapter and was unable to do any of the exercises in them... > However, I did see a few links that 'graphically' showed a Category > and another that showed some categories and how they were implemented > in Haskell - these made the most sense to me... > Since categories are the basis for Functors, Monoids and Monads - > which are extensively used in Haskell and implicitly used, I think, in > Linq - I would be very willing to participate in a project that showed > categories and how they are implemented in Haskell... > > Just a thought... > > Ps > I am an independent software consultant [been doing it for 30+ years]. > I did a market evaluation of Haskell and Linq and found the following: > - there are page after page of Ling/C# jobs... > - I only saw 1 Haskell job... > It 'begs the question': is some commercial organization going to > implement Haskell as a product [I don't think it will be Microsoft, > since they have introduced F#]... > > ----- Original Message ----- From: "Patrick Lynch" > <kmandpjly...@verizon.net> > To: "aditya siram" <aditya.si...@gmail.com> > Cc: <beginners@haskell.org> > Sent: Tuesday, April 05, 2011 9:45 AM > Subject: Re: [Haskell-beginners] Looking for some pro bono haskell work > > >> Good morning, >> Thanks for the advice. >> I sent an email to Zvon and volunteered to help them with the >> examples of Haskell functions in their "Haskell Reference Page" >> The projects that I envisage are: >> - I tried to get TK installed but was unable to do so, if someone >> is working this install, I would be willing to test it for them... >> - If anyone is working on a web front-end to Haskell, I would be >> willing to participate... >> Good day >> >> ----- Original Message ----- From: "aditya siram" >> <aditya.si...@gmail.com> >> To: "Patrick Lynch" <kmandpjly...@verizon.net> >> Cc: <beginners@haskell.org> >> Sent: Monday, April 04, 2011 5:19 PM >> Subject: Re: [Haskell-beginners] Looking for some pro bono haskell work >> >> >>> I would pick a project and contribute a patch to it, or start one of >>> your own. >>> -deech >>> >>> On Mon, Apr 4, 2011 at 4:17 PM, Patrick Lynch >>> <kmandpjly...@verizon.net> wrote: >>>> Good afternoon, >>>> I've read all the books and am looking for some pro bono Haskell >>>> Development >>>> work... >>>> If you have some, please email me... >>>> Thanks >>>> _______________________________________________ >>>> Beginners mailing list >>>> Beginners@haskell.org >>>> http://www.haskell.org/mailman/listinfo/beginners >>>> >>>> >>> >> >> >> _______________________________________________ >> Beginners mailing list >> Beginners@haskell.org >> http://www.haskell.org/mailman/listinfo/beginners >> > > > _______________________________________________ > Beginners mailing list > Beginners@haskell.org > http://www.haskell.org/mailman/listinfo/beginners ------------------------------ _______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners End of Beginners Digest, Vol 34, Issue 8 ****************************************