Casey Basichis | 29 Jan 08:21 2013
Picon

Most used functions in hackage

Hi,

I'm guessing this is a long shot, but

Is there any link that counts the use of all functions in all packages in Hackage and lists them by frequency or by other stats?

I'm still new to haskell but I've been working my way through tons and tons of tutorials and books. It would be very helpful to target in on the current reality of the most critical functions.

Anything like this out there?

Thanks,
Casey
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe <at> haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Dmitry Vyal | 29 Jan 08:57 2013
Picon

Re: Most used functions in hackage

On 01/29/2013 11:21 AM, Casey Basichis wrote:
>
> Is there any link that counts the use of all functions in all packages 
> in Hackage and lists them by frequency or by other stats?
>
> I'm still new to haskell but I've been working my way through tons and 
> tons of tutorials and books. It would be very helpful to target in on 
> the current reality of the most critical functions.
>
Hello Casey,

You can use Hoogle http://www.haskell.org/hoogle/ to get information 
about a particular function or to find a function by a part of it's 
signature.

While it's helpful to carefully study some basic modules like Prelude 
function by function, I don't think it's a good approach in general. I 
suggest you to look for reviews of popular modules. Personally, I found 
"24 days of hackage" http://ocharles.org.uk/blog/ to be quite 
informative. I wouldn't argue it's a best source for a beginner, but at 
least it gives quite a broad perspective.

Best regards,
Dmitry
Casey Basichis | 29 Jan 09:23 2013
Picon

Re: Most used functions in hackage

Hi Dmitry,

Thanks for the links.  I've been through the 24 Days of Hackage, but I think its time to run through them again now that I'm a little more familiar with everything.

Why do you think browsing function by function is a bad idea?  It seems that knowing exactly what the most used functions are would be an extremely effective way of finding both which parts of the Prelude and Hackage are most broadly useful (instead of browsing them like a phonebook) and also finding support from the community as the most commonly used functions would likely be the easiest to find support for.

I guess what I'm looking for doesn't exist, which is what it is.  I'm just interested in why it's not an ideal way to take in Haskell, starting with the common and moving to the to rare.

Thanks,
Casey


On Mon, Jan 28, 2013 at 11:57 PM, Dmitry Vyal <akamaus <at> gmail.com> wrote:
On 01/29/2013 11:21 AM, Casey Basichis wrote:

Is there any link that counts the use of all functions in all packages in Hackage and lists them by frequency or by other stats?

I'm still new to haskell but I've been working my way through tons and tons of tutorials and books. It would be very helpful to target in on the current reality of the most critical functions.

Hello Casey,

You can use Hoogle http://www.haskell.org/hoogle/ to get information about a particular function or to find a function by a part of it's signature.

While it's helpful to carefully study some basic modules like Prelude function by function, I don't think it's a good approach in general. I suggest you to look for reviews of popular modules. Personally, I found "24 days of hackage" http://ocharles.org.uk/blog/ to be quite informative. I wouldn't argue it's a best source for a beginner, but at least it gives quite a broad perspective.

Best regards,
Dmitry




--
Casey James Basichis
Composer - Cartoon Network
http://www.caseyjamesbasichis.com
caseybasichis <at> gmail.com
310.387.7540
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe <at> haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Henk-Jan van Tuyl | 29 Jan 11:17 2013
Picon

Re: Most used functions in hackage

On Tue, 29 Jan 2013 09:23:34 +0100, Casey Basichis  
<caseybasichis <at> gmail.com> wrote:

> I guess what I'm looking for doesn't exist, which is what it is.  I'm  
> just
> interested in why it's not an ideal way to take in Haskell, starting with
> the common and moving to the to rare.
>

It is worth while to study the Prelude functions:
   A Tour of the Haskell Prelude
   http://undergraduate.csse.uwa.edu.au/units/CITS1211/Documentation/tourofprelude.html

and:
   A tour of the Haskell Monad functions
   http://members.chello.nl/hjgtuyl/tourdemonad.html

Regards,
Henk-Jan van Tuyl

--

-- 
http://Van.Tuyl.eu/
http://members.chello.nl/hjgtuyl/tourdemonad.html
Haskell programming
--
Dmitry Vyal | 31 Jan 08:50 2013
Picon

Re: Most used functions in hackage

On 01/29/2013 12:23 PM, Casey Basichis wrote:
>
> Why do you think browsing function by function is a bad idea?  It 
> seems that knowing exactly what the most used functions are would be 
> an extremely effective way of finding both which parts of the Prelude 
> and Hackage are most broadly useful (instead of browsing them like a 
> phonebook) and also finding support from the community as the most 
> commonly used functions would likely be the easiest to find support for.
>
Well, I think the popularity is best measured on the level of packages, 
not separate functions. And I've seen quite a few ratings of most 
popular packages in the past. For example:

http://corp.galois.com/blog/2009/3/23/one-million-haskell-downloads.html
http://haskellwebnews.wordpress.com/2011/03/16/hackage-stats-the-past-year/

I guess Google can suggest much more. There is one thing you should keep 
in mind while looking at such charts. Authors measure number of 
downloads. Most of them are results of cabal-install fetching 
dependencies, not of the deliberate decision of a programmer to use the 
package.
Rustom Mody | 1 Feb 16:00 2013
Picon

Re: Most used functions in hackage

On Tue, Jan 29, 2013 at 1:53 PM, Casey Basichis <caseybasichis <at> gmail.com> wrote:

Hi Dmitry,

Thanks for the links.  I've been through the 24 Days of Hackage, but I think its time to run through them again now that I'm a little more familiar with everything.

Why do you think browsing function by function is a bad idea?  It seems that knowing exactly what the most used functions are would be an extremely effective way of finding both which parts of the Prelude and Hackage are most broadly useful (instead of browsing them like a phonebook) and also finding support from the community as the most commonly used functions would likely be the easiest to find support for.


Find out "the most used functions" seems to be eminently desirable.
To do that we need to count function-uses.
And to do that we need to know what to count.

Do we?

If you remember, the cost-centre mode of counting functions in haskell programs was precisely because the usual (first-order language) mode of counting would lead to the strange conclusion that map and foldr were the most used and therefore most inefficient functions in Haskell! So a new way of counting had to be devised.

There is a book: Mathsemantics by Edward Macneal which deals with things like:
How does an airline count the number of passengers. I quote from the book:

I 1980 I was one passenger, ten passengers, eighteen passengers, thirty-six passengers, forty-two passengers, fifty-five passengers, seventy-two passengers and ninety-four passengers.  Each of these statements is true.

He then goes on to explain.

I was one passenger in the sense that I was a person who traveled by air in that year.
I was eighteen passengers in the sense that I made eighteen round trips.
I was forty-two passengers in the sense that on forty-two different occasions I entered and exited the system of a different carrier.
I was seventy-two passengers in the sense that on seventy-two occasions I was on board an aircraft when it took off from one place and landed at another.
I was ninety-four passengers in the sense that I made ninety-four separate entrances and exits from airport terminal buildings.

[He missed the explanation for 10!]

He goes on to say that these differences are not mere technicalities and its important to get the sense of 'passenger'

So… like 'passenger', how many meanings does 'function-use' have?

Rusi
--
http://www.the-magus.in
http://blog.languager.org

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe <at> haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Casey Basichis | 1 Feb 17:11 2013
Picon

Re: Most used functions in hackage

That book Mathsemantics sounds like something I should read, would you recommend it?

Your point occurred to me the other day when measuring number of downloads of whole packages was mentioned as being the ideal measure.

I have more confidence in measuring the contents of the packages themselves as creating a Hackage package suggests a competency with the language and baseline of sophistication.

My thought was the best measure might be the count of functions across all packages, where an included function in any individual package would only be counted once per package.

In this sense, map and fold would still likely be towards the top, but that is as it should be.

But it seems there are many measures that would be useful, like the percentage of functions from a package that tend to get used in the same project - do people nit pick particular functions from a specific package or does the package use tend to require the use of all of its functions in every project the package is used in.

I'd love to hear some thoughts on this as I generally don't know where to begin in solving these sorts of problems and would like to know more about those methods in general.

Casey


On Fri, Feb 1, 2013 at 7:00 AM, Rustom Mody <rustompmody <at> gmail.com> wrote:
On Tue, Jan 29, 2013 at 1:53 PM, Casey Basichis <caseybasichis <at> gmail.com> wrote:
Hi Dmitry,

Thanks for the links.  I've been through the 24 Days of Hackage, but I think its time to run through them again now that I'm a little more familiar with everything.

Why do you think browsing function by function is a bad idea?  It seems that knowing exactly what the most used functions are would be an extremely effective way of finding both which parts of the Prelude and Hackage are most broadly useful (instead of browsing them like a phonebook) and also finding support from the community as the most commonly used functions would likely be the easiest to find support for.


Find out "the most used functions" seems to be eminently desirable.
To do that we need to count function-uses.
And to do that we need to know what to count.

Do we?

If you remember, the cost-centre mode of counting functions in haskell programs was precisely because the usual (first-order language) mode of counting would lead to the strange conclusion that map and foldr were the most used and therefore most inefficient functions in Haskell! So a new way of counting had to be devised.

There is a book: Mathsemantics by Edward Macneal which deals with things like:
How does an airline count the number of passengers. I quote from the book:

I 1980 I was one passenger, ten passengers, eighteen passengers, thirty-six passengers, forty-two passengers, fifty-five passengers, seventy-two passengers and ninety-four passengers.  Each of these statements is true.

He then goes on to explain.

I was one passenger in the sense that I was a person who traveled by air in that year.
I was eighteen passengers in the sense that I made eighteen round trips.
I was forty-two passengers in the sense that on forty-two different occasions I entered and exited the system of a different carrier.
I was seventy-two passengers in the sense that on seventy-two occasions I was on board an aircraft when it took off from one place and landed at another.
I was ninety-four passengers in the sense that I made ninety-four separate entrances and exits from airport terminal buildings.

[He missed the explanation for 10!]

He goes on to say that these differences are not mere technicalities and its important to get the sense of 'passenger'

So… like 'passenger', how many meanings does 'function-use' have?

Rusi
--
http://www.the-magus.in
http://blog.languager.org




--
Casey James Basichis
Composer - Cartoon Network
http://www.caseyjamesbasichis.com
caseybasichis <at> gmail.com
310.387.7540
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe <at> haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Gwern Branwen | 1 Feb 17:30 2013
Picon

Re: Most used functions in hackage

One thing you could do is download Hackage (easy enough with a little
scripting of 'cabal list'; see for example
http://www.haskell.org/pipermail/haskell-cafe/2011-July/093669.html ),
unpack, and use Language.Haskell.Exts to parse every Haskell file.
Here are two examples from the past:

1. http://www.haskell.org/pipermail/haskell-cafe/2012-January/098618.html
function-name search script which lets you parse a large number of
source files and print out anything calling a specified function (eg.
if you were thinking about deprecating something)
2. http://www.haskell.org/pipermail/haskell-cafe/2011-May/091663.html
language-extension search script; I used it to see how many source
files ever invoked LANGUAGE pragmas and which ones.

--

-- 
gwern
http://www.gwern.net
Rustom Mody | 1 Feb 19:05 2013
Picon

Re: Most used functions in hackage



On Fri, Feb 1, 2013 at 9:41 PM, Casey Basichis <caseybasichis <at> gmail.com> wrote:
That book Mathsemantics sounds like something I should read, would you recommend it?



Well its quite a favourite of mine, if that counts as a recommendation…

 
Your point occurred to me the other day when measuring number of downloads of whole packages was mentioned as being the ideal measure.

I have more confidence in measuring the contents of the packages themselves as creating a Hackage package suggests a competency with the language and baseline of sophistication.

My thought was the best measure might be the count of functions across all packages, where an included function in any individual package would only be counted once per package.

In this sense, map and fold would still likely be towards the top, but that is as it should be.

But it seems there are many measures that would be useful, like the percentage of functions from a package that tend to get used in the same project - do people nit pick particular functions from a specific package or does the package use tend to require the use of all of its functions in every project the package is used in.

I'd love to hear some thoughts on this as I generally don't know where to begin in solving these sorts of problems and would like to know more about those methods in general.


Well… it seems to be a good idea to back off from here a bit and ask how we came here.
You want to learn haskell  for which you want to pinpoint the 'most' used functions.
Lets leave aside the question that 'most' may be harder to specify than we may first imagine.

Instead lets make a map (functor?) from learning the programming language Haskell to learning the natural language English.
So I dont know English (and yeah there are Godelian anomalies in that statement) and I gather that vocabulary is a key to mastering the language.
Now Webster is a bit too fat to cram up as a whole so I decide to isolate the 5000 most used English words.
Do you think my English mastery will be improved that way?
Surely Webster had a bigger vocabulary than Shakespeare.
Do you think Webster knew English better than Shakespeare?
[You can of course replace Shakespeare to whoever happens to take your fancy]

IOW mastering the paradigm is more important than the details.

Now its important to get that the paradigm cannot be caught in any single-point sloganeering such as:
"Functional programming is programming without side-effects"
"Haskell is syntactically sugared lambda calculus"
"The key feature of Haskell is its sexy type magic"

Nevertheless its also true that 'paradigm' consists of far fewer elements than 'the 500 most used functions.'

I have a couple of pages on my blog:
http://blog.languager.org/2012/10/functional-programming-lost-booty.html
gives a few of the basics that FPers should know (IMHO) before going to advanced stuff. I should mention that it was written it because Haskell is becoming increasingly hard for beginners with the focus on 'type-magic' is overshadowing the basics. [In any case after 25 years of teaching, I am finding it harder and harder to teach] If you have crossed over the basic stage it may not be much use to you :-)

There is also
http://blog.languager.org/2011/02/cs-education-is-fat-and-weak-1.html and sequel
which is more of a grumble about CS education than about FP/Haskell per se.
Still, an undercurrent of that grumble is that much of the nonsense of CS education is because FP has not become mainstream soon enough.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe <at> haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Casey Basichis | 1 Feb 23:08 2013
Picon

Re: Most used functions in hackage

I just ordered Mathsemantics for a hefty $2.10.

Your article's were an enjoyable read and very informative.  I'll dig more into you blog tonight.  

I've read the Great Good book, Haskell school of music, and I'm working my way through Real World Haskell. I've also read countless blog articles on Haskell.

With a great deal read and understood about Haskell I have no confidence that I can make anything in it at all.

Kurt Vonnegut retyped James Joyce's work to feel a great novel under his fingers before writing his own.

Webster knew English better than Shakespeare.  Shakespeare was a master of creation.

To be able to create from a small core and then extend those intuitions with knowledge over time is to me far more effective than mastering language and then attempting creation.

While not rigorous, getting hands on with high level practical libraries and working by example would have built my intuitions far faster than all of the countless reading and toy examples I've done.  The problem is, for that approach, there isn't any material for a book or insightful blog post to be written. Mimetics are mundane and unnecessary to those in the know.  The teachers seem to be unaware of how their own intuitions were formed.

While learning the fundamentals my mind struggles to imagine how these basic concepts play into the larger picture - how would they use foldr to build persistent?  I don't have real answers to those questions but it's a constant distraction.

I am certain that sitting down with a few simple examples of how to use a library like Persistent, without any concern as to how it works, will surely take me from a useless Haskeller to being able to make useful tools that I can use in my career as a composer.

In learning Do notation the books took me through three ways of expressing the same thing before arriving at the sugary syntax that I will likely use for the next ten projects. I don't see that as building a core towards creation, but rather the elevation of a fetishy obsession with language.  Children learn the most critical words before grammar - only in language studies does grammar come before vocabulary.

The question is what is the core knowledge that facilitates creation?

That core is a mutating form.  It works from the high level downward as it needs to, not from the low level upward because it is thought that it should.  There are thousands of articles on how to use raw C++ pointers. One in the know knows to use smart pointers because they facilitate creation.

I constantly read authors of blog posts say things like "I wish I had learned monad transformers sooner."  What is a rigorous way to prioritize learning the full scope of Haskell so that creative intuition is maximized?  How can I know that Arrows will be generally more effective than Category-Extras for creating things?

If data mining Hackage to find the practical reality of how Haskell is actually being used by people who are creating complete and useful things is not an effective way to learn, what approach is better?

Best,
Casey


On Fri, Feb 1, 2013 at 10:05 AM, Rustom Mody <rustompmody <at> gmail.com> wrote:


On Fri, Feb 1, 2013 at 9:41 PM, Casey Basichis <caseybasichis <at> gmail.com> wrote:
That book Mathsemantics sounds like something I should read, would you recommend it?



Well its quite a favourite of mine, if that counts as a recommendation…

 
Your point occurred to me the other day when measuring number of downloads of whole packages was mentioned as being the ideal measure.

I have more confidence in measuring the contents of the packages themselves as creating a Hackage package suggests a competency with the language and baseline of sophistication.

My thought was the best measure might be the count of functions across all packages, where an included function in any individual package would only be counted once per package.

In this sense, map and fold would still likely be towards the top, but that is as it should be.

But it seems there are many measures that would be useful, like the percentage of functions from a package that tend to get used in the same project - do people nit pick particular functions from a specific package or does the package use tend to require the use of all of its functions in every project the package is used in.

I'd love to hear some thoughts on this as I generally don't know where to begin in solving these sorts of problems and would like to know more about those methods in general.


Well… it seems to be a good idea to back off from here a bit and ask how we came here.
You want to learn haskell  for which you want to pinpoint the 'most' used functions.
Lets leave aside the question that 'most' may be harder to specify than we may first imagine.

Instead lets make a map (functor?) from learning the programming language Haskell to learning the natural language English.
So I dont know English (and yeah there are Godelian anomalies in that statement) and I gather that vocabulary is a key to mastering the language.
Now Webster is a bit too fat to cram up as a whole so I decide to isolate the 5000 most used English words.
Do you think my English mastery will be improved that way?
Surely Webster had a bigger vocabulary than Shakespeare.
Do you think Webster knew English better than Shakespeare?
[You can of course replace Shakespeare to whoever happens to take your fancy]

IOW mastering the paradigm is more important than the details.

Now its important to get that the paradigm cannot be caught in any single-point sloganeering such as:
"Functional programming is programming without side-effects"
"Haskell is syntactically sugared lambda calculus"
"The key feature of Haskell is its sexy type magic"

Nevertheless its also true that 'paradigm' consists of far fewer elements than 'the 500 most used functions.'

I have a couple of pages on my blog:
http://blog.languager.org/2012/10/functional-programming-lost-booty.html
gives a few of the basics that FPers should know (IMHO) before going to advanced stuff. I should mention that it was written it because Haskell is becoming increasingly hard for beginners with the focus on 'type-magic' is overshadowing the basics. [In any case after 25 years of teaching, I am finding it harder and harder to teach] If you have crossed over the basic stage it may not be much use to you :-)

There is also
http://blog.languager.org/2011/02/cs-education-is-fat-and-weak-1.html and sequel
which is more of a grumble about CS education than about FP/Haskell per se.
Still, an undercurrent of that grumble is that much of the nonsense of CS education is because FP has not become mainstream soon enough.



--
Casey James Basichis
Composer - Cartoon Network
http://www.caseyjamesbasichis.com
caseybasichis <at> gmail.com
310.387.7540
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe <at> haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Rustom Mody | 2 Feb 07:31 2013
Picon

Re: Most used functions in hackage



On Sat, Feb 2, 2013 at 3:38 AM, Casey Basichis <caseybasichis <at> gmail.com> wrote:
I just ordered Mathsemantics for a hefty $2.10.

Your article's were an enjoyable read and very informative.  I'll dig more into you blog tonight.  

I've read the Great Good book, Haskell school of music, and I'm working my way through Real World Haskell. I've also read countless blog articles on Haskell.

With a great deal read and understood about Haskell I have no confidence that I can make anything in it at all.

Kurt Vonnegut retyped James Joyce's work to feel a great novel under his fingers before writing his own.

Webster knew English better than Shakespeare.  Shakespeare was a master of creation.

To be able to create from a small core and then extend those intuitions with knowledge over time is to me far more effective than mastering language and then attempting creation.

While not rigorous, getting hands on with high level practical libraries and working by example would have built my intuitions far faster than all of the countless reading and toy examples I've done.  The problem is, for that approach, there isn't any material for a book or insightful blog post to be written. Mimetics are mundane and unnecessary to those in the know.  The teachers seem to be unaware of how their own intuitions were formed.

While learning the fundamentals my mind struggles to imagine how these basic concepts play into the larger picture - how would they use foldr to build persistent?  I don't have real answers to those questions but it's a constant distraction.

I am certain that sitting down with a few simple examples of how to use a library like Persistent, without any concern as to how it works, will surely take me from a useless Haskeller to being able to make useful tools that I can use in my career as a composer.

In learning Do notation the books took me through three ways of expressing the same thing before arriving at the sugary syntax that I will likely use for the next ten projects. I don't see that as building a core towards creation, but rather the elevation of a fetishy obsession with language.  Children learn the most critical words before grammar - only in language studies does grammar come before vocabulary.

The question is what is the core knowledge that facilitates creation?

That core is a mutating form.  It works from the high level downward as it needs to, not from the low level upward because it is thought that it should.  There are thousands of articles on how to use raw C++ pointers. One in the know knows to use smart pointers because they facilitate creation.

I constantly read authors of blog posts say things like "I wish I had learned monad transformers sooner."  What is a rigorous way to prioritize learning the full scope of Haskell so that creative intuition is maximized?  How can I know that Arrows will be generally more effective than Category-Extras for creating things?

If data mining Hackage to find the practical reality of how Haskell is actually being used by people who are creating complete and useful things is not an effective way to learn, what approach is better?

Best,
Casey


Lets say you teach the piano and two prospective students come to you.
A with much passion wants to play like this
http://www.youtube.com/watch?v=3L0Rncqx1yQ
B with more focus than passion, has this ideal
http://www.youtube.com/watch?v=Yu06WnXlPCY

Who do you think/feel would be more likely to succeed?
Who would you prefer to teach?

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe <at> haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Casey Basichis | 2 Feb 08:13 2013
Picon

Re: Most used functions in hackage

I'm not sure what you mean.  

I would imagine popular success for either would be circumstantial and have little to do with their actual ability and more to do with the opportunities they pursue and the cultural atmosphere at the time.

For this student: 
I would have a very clear idea of the many things I would excise from the typical piano education to help her form her musical intuitions as simply and effectively as possible, with the knowledge that in time, she will find her own way to a personal style and repertoire.
 
You are being a little cryptic.  I don't see how the nuances that differentiate two experts relates.


On Fri, Feb 1, 2013 at 10:31 PM, Rustom Mody <rustompmody <at> gmail.com> wrote:


On Sat, Feb 2, 2013 at 3:38 AM, Casey Basichis <caseybasichis <at> gmail.com> wrote:
I just ordered Mathsemantics for a hefty $2.10.

Your article's were an enjoyable read and very informative.  I'll dig more into you blog tonight.  

I've read the Great Good book, Haskell school of music, and I'm working my way through Real World Haskell. I've also read countless blog articles on Haskell.

With a great deal read and understood about Haskell I have no confidence that I can make anything in it at all.

Kurt Vonnegut retyped James Joyce's work to feel a great novel under his fingers before writing his own.

Webster knew English better than Shakespeare.  Shakespeare was a master of creation.

To be able to create from a small core and then extend those intuitions with knowledge over time is to me far more effective than mastering language and then attempting creation.

While not rigorous, getting hands on with high level practical libraries and working by example would have built my intuitions far faster than all of the countless reading and toy examples I've done.  The problem is, for that approach, there isn't any material for a book or insightful blog post to be written. Mimetics are mundane and unnecessary to those in the know.  The teachers seem to be unaware of how their own intuitions were formed.

While learning the fundamentals my mind struggles to imagine how these basic concepts play into the larger picture - how would they use foldr to build persistent?  I don't have real answers to those questions but it's a constant distraction.

I am certain that sitting down with a few simple examples of how to use a library like Persistent, without any concern as to how it works, will surely take me from a useless Haskeller to being able to make useful tools that I can use in my career as a composer.

In learning Do notation the books took me through three ways of expressing the same thing before arriving at the sugary syntax that I will likely use for the next ten projects. I don't see that as building a core towards creation, but rather the elevation of a fetishy obsession with language.  Children learn the most critical words before grammar - only in language studies does grammar come before vocabulary.

The question is what is the core knowledge that facilitates creation?

That core is a mutating form.  It works from the high level downward as it needs to, not from the low level upward because it is thought that it should.  There are thousands of articles on how to use raw C++ pointers. One in the know knows to use smart pointers because they facilitate creation.

I constantly read authors of blog posts say things like "I wish I had learned monad transformers sooner."  What is a rigorous way to prioritize learning the full scope of Haskell so that creative intuition is maximized?  How can I know that Arrows will be generally more effective than Category-Extras for creating things?

If data mining Hackage to find the practical reality of how Haskell is actually being used by people who are creating complete and useful things is not an effective way to learn, what approach is better?

Best,
Casey


Lets say you teach the piano and two prospective students come to you.
A with much passion wants to play like this
http://www.youtube.com/watch?v=3L0Rncqx1yQ
B with more focus than passion, has this ideal
http://www.youtube.com/watch?v=Yu06WnXlPCY

Who do you think/feel would be more likely to succeed?
Who would you prefer to teach?




--
Casey James Basichis
Composer - Cartoon Network
http://www.caseyjamesbasichis.com
caseybasichis <at> gmail.com
310.387.7540
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe <at> haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Rustom Mody | 2 Feb 09:14 2013
Picon

Re: Most used functions in hackage



On Sat, Feb 2, 2013 at 12:43 PM, Casey Basichis <caseybasichis <at> gmail.com> wrote:
I'm not sure what you mean.  

I would imagine popular success for either would be circumstantial and have little to do with their actual ability and more to do with the opportunities they pursue and the cultural atmosphere at the time.

 
For this student: 
I would have a very clear idea of the many things

He He... Yes you are making a similar point to what I am making -- calibrating the learning curve.

I would excise from the typical piano education to help her form her musical intuitions as simply and effectively as possible, with the knowledge that in time, she will find her own way to a personal style and repertoire.
 
You are being a little cryptic.  I don't see how the nuances that differentiate two experts relates.


Sorry… Yes…
a. There are some concerns which a teacher thinks about which experts -- whether in FP or in music -- may not think about
b. And then there is a side that is going too far afield for a haskell list… so yes I was cryptic I guess.

For now let me say this much: I spent much precious time and energy and vitality in my younger days trying (more correctly wishing) to play piano like Cziffra and just making a thorough mess.  If my teacher had calibrated my learning curve according to my needs rather than my whims it may have been better.  Then again who knows? How many talented students have lost interest due to over-strict teachers?

This line of inquiry is perhaps best taken off the haskell list. For now let me just make a couple of observations that are (hopefully :-) ) on-topic for the question of learning haskell, though (1,2) are true for learning anything, not just FP/Haskell.

1. In any field, teachers need to work out the path aka learning curve through the field.  This usually manifests as 'pre-requisites' in a curricular structure. eg
To study quantum physics, differential equations are needed, they need algebra, which needs basic arithmetic
2. What the student thinks he most needs, he usually needs to go easy on.
eg diabetics like sweets (usually), BP-patients like salty savouries and obese/heart-patients like rich food
3. In CS/programming the problems are compounded; nobody agrees on how the basics and the advanced stuff bifurcate.  How many CS depts have a significant amount of haskell? How many start with haskell?
Yes, you may say, but that is a local, specific problem.
I would like to suggest that it is general and systemic:
So if I may quote myself: http://blog.languager.org/2011/02/cs-education-is-fat-and-weak-2.html :
CS-academics are mostly teaching the wrong things, and when right in the wrong order.

Rusi
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe <at> haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Richard O'Keefe | 3 Feb 22:58 2013
Picon

Re: Most used functions in hackage


On 2/02/2013, at 7:05 AM, Rustom Mody wrote:

> Instead lets make a map (functor?) from learning the programming language Haskell to learning the
natural language English.
> So I dont know English (and yeah there are Godelian anomalies in that statement) and I gather that
vocabulary is a key to mastering the language.
> Now Webster is a bit too fat to cram up as a whole so I decide to isolate the 5000 most used English words. 
> Do you think my English mastery will be improved that way?

*Stopping* there will not let you master English,
but *beginning* with a core of high frequency words
is a good idea for bootstrapping.

"Basic English" had 700 words.
"Globish" has 1500 words.
The Longman Dictionary of Contemporary English uses a
controlled core of about 2200 words in all definitions.

> Surely Webster had a bigger vocabulary than Shakespeare.

Many people called Webster have written.
Assuming you mean the lexicographer,
just because someone is able to put a word into a dictionary
does not mean that it is part of their active vocabulary.
(Vide Johnson's famous "Ignorance, madam, pure ignorance.")
Shakespeare's active vocabulary was on the close order of
20,000 terms.  (This actually seems to be a typical size for
pre-literate natural language entire vocabularies.)  It
would be surprising if _in his other writings_ Webster's
active vocabulary were noticeably larger than Shakespeare's.
> 
> IOW mastering the paradigm is more important than the details.

False dichotomy.  Haskell (and English) being Haskell (and
English), you _can't_ learn a significant chunk of the
library (high-frequency vocabulary) without learning something
about the way things are put together.

You can learn the English word 'vomer' without learning
anything important about English, but learn what 'although'
means AND HOW IT IS USED and you have learned quite a bit.

In the same way, you can't really learn 'liftM' without
learning quite a lot about Haskell.

> I have a couple of pages on my blog:
> http://blog.languager.org/2012/10/functional-programming-lost-booty.html
> gives a few of the basics that FPers should know (IMHO) before going to advanced stuff. I should mention
that it was written it because Haskell is becoming increasingly hard for beginners with the focus on
'type-magic' is overshadowing the basics. [In any case after 25 years of teaching, I am finding it harder
and harder to teach] If you have crossed over the basic stage it may not be much use to you :-)

Not just beginners, either.

There _is_ a problem with the idea of trawling the top N functions
from Hackage.  That is that the code written for Hackage is, by and
large, written to be used rather than understood by beginners.  These
are not necessarily the top N functions that it is useful for a
beginner to use or know.  It's probably better to pick one module at
a time that provides a service you really intend to use and learn
what you can from that.  (Like learning how to read one complete
story.)

Gmane