tag:blogger.com,1999:blog-6712179876742604415.post411162029848228244..comments2023-10-20T21:18:30.097+01:00Comments on profsjt: Is Haskell the right language for teaching functional programming principles?Anonymoushttp://www.blogger.com/profile/02841876350884552299noreply@blogger.comBlogger41125tag:blogger.com,1999:blog-6712179876742604415.post-14347886782268338142022-06-27T15:43:36.708+01:002022-06-27T15:43:36.708+01:00yurtdışı kargo
nft nasıl alınır
uc satın al
lisans...<a href="https://bit.ly/yurtdisi-kargo-yurtdisi-kargo" title="yurtdışı kargo" rel="nofollow">yurtdışı kargo</a><br /><a href="https://bit.ly/nft-nasil-alinir" title="nft nasıl alınır" rel="nofollow">nft nasıl alınır</a><br /><a href="https://ucsatinal.net/" title="uc satın al" rel="nofollow">uc satın al</a><br /><a href="https://www.lisanssatinal.com/" title="lisans satın al" rel="nofollow">lisans satın al</a><br /><a href="https://www.perdemodelleri.org/" title="en son çıkan perde modelleri" rel="nofollow">en son çıkan perde modelleri</a><br /><a href="https://anindapremium.com/" title="minecraft premium" rel="nofollow">minecraft premium</a><br /><a href="https://bit.ly/ozel-ambulans" title="özel ambulans" rel="nofollow">özel ambulans</a><br /><a href="https://bit.ly/perde-modelleri" title="en son çıkan perde modelleri" rel="nofollow">en son çıkan perde modelleri</a><br />Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-60232689373375753342022-05-17T18:05:57.614+01:002022-05-17T18:05:57.614+01:00perde modelleri
sms onay
mobil ödeme bozdurma
nft ...<a href="https://www.perdemodelleri.org/" title="perde modelleri" hreflang="tr" rel="nofollow">perde modelleri</a><br /><a href="https://smsonayadresi.com/" title="sms onay" hreflang="tr" rel="nofollow">sms onay</a><br /><a href="https://odemebozdurma.com/" hreflang="tr" rel="nofollow">mobil ödeme bozdurma</a><br /><a href="https://nftnasilalinir.com/" title="nft nasıl alınır" hreflang="tr" rel="nofollow">nft nasıl alınır</a><br /><a href="https://bit.ly/ankara-evden-eve-nakliyat-ankara-evden-eve-nakliyat" title="ankara evden eve nakliyat" hreflang="tr" rel="nofollow">ankara evden eve nakliyat</a><br /><a href="https://sigortix.com/" rel="nofollow">trafik sigortasi</a><br /><a href="https://www.ugurelektronik.com/derin-arama-dedektorleri" title="dedektör" hreflang="tr" rel="nofollow">dedektör</a><br /><a href="https://kurma.website/" title="web sitesi kurma" hreflang="tr" rel="nofollow">web sitesi kurma</a><br /><a href="https://www.askkitaplari.com/" title="aşk kitapları" rel="nofollow">aşk kitapları</a><br />Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-89464644708698695492020-05-23T09:46:37.699+01:002020-05-23T09:46:37.699+01:00Hi Dear,
Thanks for sharing such a useful blog. Re...Hi Dear,<br />Thanks for sharing such a useful blog. Really! This Blog is very informative for us which contains a lot of information about the Counselling For Men. I like this post. Please visit at<a href="https://qualityassignmenthelp.com/final-year-project/" rel="nofollow"> "final year project helper"</a>,Final year projects are crucial and can make a lot of difference to your grades. In fact, they account for more than 25% of your final year marks<br /><br /><br />Visit Here - <a href="https://qualityassignmenthelp.com/final-year-project/" rel="nofollow">https://qualityassignmenthelp.com/final-year-project/</a>ThanksDinesh Dewasihttps://www.blogger.com/profile/09019907965671158346noreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-32013399260258584102019-10-28T14:44:01.665+00:002019-10-28T14:44:01.665+00:00Thanks for posting this info. I just want to let y...Thanks for posting this info. I just want to let you know that I just check out your site and I find it very interesting and informative. I can't wait to read lots of your posts.<br /><a href="https://www.itcsdaixie.com" rel="nofollow">cs作业</a>haider alihttps://www.blogger.com/profile/16504388050194663443noreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-19598776423034890322019-10-10T09:51:57.596+01:002019-10-10T09:51:57.596+01:00smallairforce
themisanthropesjournal
patchencasa
b...<a href="https://smallairforces.blogspot.com/2011/07/dhaka-kurmitola-air-base.html?showComment=1570439262395#c177390386497975421" rel="nofollow">smallairforce</a><br /><a href="https://themisanthropesjournal.blogspot.com/2012/12/top-10-most-beautiful-places-in-uk.html?showComment=1570439259925#c3087792165555939486" rel="nofollow">themisanthropesjournal</a><br /><a href="https://patchencasa.blogspot.com/2017/07/no-te-quedes-sin-tus-revistas-de-labores.html?showComment=1570438628452#c8737817351329017674" rel="nofollow">patchencasa</a><br /><a href="https://blog.thaiaiti.com/2016/09/de-mo-studio-anh-vien-ao-cuoi-can-nhung-gi.html?showComment=1570270142120#c5096698261203475290" rel="nofollow">blog.thaiaiti</a>Anaya Sinhahttps://www.blogger.com/profile/07470961992698366460noreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-52802811025796039132018-12-05T06:39:59.830+00:002018-12-05T06:39:59.830+00:00Thanks for posting this useful content.Very inform...Thanks for posting this useful content.Very informative.<br /><a href="https://www.clippingpathquick.com/" title="Clipping Path Service" rel="nofollow">clipping path service</a>Anonymoushttps://www.blogger.com/profile/17016338951459879542noreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-70553434543220048312018-09-13T06:09:48.496+01:002018-09-13T06:09:48.496+01:00This comment has been removed by the author.Clipping Solutionshttps://www.blogger.com/profile/16126945506709626936noreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-87618888172215900392017-12-21T23:54:56.489+00:002017-12-21T23:54:56.489+00:00It is the wrong question to ask. What you want to ...It is the wrong question to ask. What you want to ask is<br /><br /> (1) what do I teach so that students can apply it in any industrial setting <br />Answer: Obviously that types drive design, as How to Design Programs has done for 20+ years. <br /><br /><br /> (2) how do I teach this best with a functional language <br />Answer: With languages that match the cognitive stage of the design-oriented curriculum. <br /><br /> (3) How do I teach so that they will also miss functional programming in down-stream courses and industrial co-op positions? <br /><br />If my experience with 100s and 1000s of students from Northeastern is any indication, it works to use the HtDP approach plus explaining in the classroom that we teach neither functional nor dysfunctional programming, that we are not ideologues, and that the method is applicable to Imperative Programming just as well (and you demonstrate all of this). matthiashttps://www.blogger.com/profile/00000181081270224360noreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-19580493838438073702017-12-21T17:27:59.621+00:002017-12-21T17:27:59.621+00:00Hi Simon — surely you know about the existence of ...Hi Simon — surely you know about the existence of Typed Racket (about which there have been numerous papers), which gives you "strong typing out of the box". <br /><br />Even better for teaching, IMO, is the language plai-typed, which is the H-M type system; it was originally developed by Matthew Flatt for the second edition of my book PLAI, but there's no reason it's limited to that.<br /><br />There may well be other reasons you don't care for Racket, but please don't bring up "no types out of the box" as the reason, when in fact there are two very different type systems in the box (two times as many as Haskell! <-;).<br /><br />As your Unknown correspond notes, Pyret also has types; you just select the typed mode and the type checker runs. But the type checker is still under development.Shriram Krishnamurthihttps://www.blogger.com/profile/02956763366608000839noreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-50062094761734844052017-12-06T07:50:52.144+00:002017-12-06T07:50:52.144+00:00I had to do a double-take there before I understoo...I had to do a double-take there before I understood you meant "we want to teach type-driven development but this is hard in Erlang" and not "Erlang forces us to do type-driven development and this makes it hard to teach". Anonymoushttps://www.blogger.com/profile/00166231280486638651noreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-13295828639631321032017-11-30T17:10:14.929+00:002017-11-30T17:10:14.929+00:00And you can find a video interview where I talk a ...And you can find a video interview where I talk a little more about teaching functional programming here - thanks to Ollie Charles for making this happen, and the people at Skills Matter for the HaskellX event https://skillsmatter.com/conferences/8522-haskell-exchange-2017#get_involvedAnonymoushttps://www.blogger.com/profile/02841876350884552299noreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-78316701783011722412017-11-01T01:29:10.096+00:002017-11-01T01:29:10.096+00:00The problem does not seem to be the Haskell langua...The problem does not seem to be the Haskell language itself, but the fact that the standard library relies too much on relatively advanced concepts (typeclasses, folds, monads, ...).<br /><br />I suspect that Haskell endowed with a watered down, "first-order" standard library, (built exclusively upon inductive data-types, recursion, pattern-matching, and a few reasonable typeclasses (Eq, Ord, Show)) should provide a good environment for teaching.Pablo Barenbaumhttps://www.blogger.com/profile/02831884524491790073noreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-39907260269730288642017-10-22T23:58:30.599+01:002017-10-22T23:58:30.599+01:00Hi Chris. Is Duet open source ? I am really intere...Hi Chris. Is Duet open source ? I am really interested in semantic editors and would love to take a look at it !Danielhttps://www.blogger.com/profile/01500606032384513031noreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-11892341603204572542017-10-17T21:54:30.439+01:002017-10-17T21:54:30.439+01:00Yeah, OCamlers tend to use labelled arguments and ...Yeah, OCamlers tend to use labelled arguments and Haskellers I would say tend to use newtype wrappers (at least it's a recommended best practice) so you'd see types more like `substring : String -> Position -> Length -> String`.Yawarhttps://www.blogger.com/profile/13741563704441932843noreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-21694086731400989832017-10-17T21:48:38.501+01:002017-10-17T21:48:38.501+01:00One particular things that has always been a thorn...One particular things that has always been a thorn in my eye here is something like a function 'substring : string -> int -> int -> string' in Haskell. The two integers are position and length, but which is which? In OCaml, you can do labeled arguments and type it as 'string -> pos:int -> len:int -> string' and a call is 'substring str ~pos:4 ~len:10'. In fact, some of my Erlang code resorts to 'sub_string(Str, #{ pos => 4, len => 10 })' for the interface in order to make it hard to avoid the confusion. Also consider '#{ private_part := Priv, public_part := Pub } = crypto:keygen()'. Accidentally switching those types around is quite dangerous.<br /><br />In contrast however, the verbosity of something like Java overboards itself with explicitness. It becomes a tedious rote to the point where IDEs generate the code for you. Once this happens, errors are bound to happen because you generated the wrong code with a click and your mind doesn't realize the wrong thing is there!<br /><br />As for Agda vs. Idris, I recently toyed with both and I think they are about the same level in how researchy they are right now. But Neel's point about Agda being more explicit is an excellent one. Anonymoushttps://www.blogger.com/profile/02990737394952724516noreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-88148597334358294062017-10-17T16:50:24.669+01:002017-10-17T16:50:24.669+01:00Yes, it can be a very good thing to be explicit: s...Yes, it can be a very good thing to be explicit: saving a few keystrokes is never a strong motivation.Anonymoushttps://www.blogger.com/profile/02841876350884552299noreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-40582223850830003542017-10-17T16:02:16.706+01:002017-10-17T16:02:16.706+01:00I don't know, since we didn't try it! Howe...I don't know, since we didn't try it! However, we didn't try it because at the time, Idris seemed even even more "researchy" than Agda. For example, the parser and syntax seemed to have more ad-hoc bits than in Agda (mostly to make it look a bit more like Haskell). <br /><br />One thing I liked in Agda (as opposed to Idris, ML and Haskell) is that all polymorphic quantifiers have to be explicitly specified. My personal suspicion is that if you are teaching how polymorphism works, it's actually helpful to start out making it fully explicit and then gradually introduce techniques for making it implicit. (It's hard to say for sure because the students had already seen Java, Ocaml and Haskell by the time they met Agda...) <br /><br />Neel Krishnaswamihttps://www.blogger.com/profile/06853898957395028131noreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-82052027468006019082017-10-17T14:44:40.259+01:002017-10-17T14:44:40.259+01:00Interesting … any thoughts about whether Idris wou...Interesting … any thoughts about whether Idris would have been (more) suitable?Anonymoushttps://www.blogger.com/profile/02841876350884552299noreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-37747440765985904852017-10-17T14:43:18.818+01:002017-10-17T14:43:18.818+01:00I had much the same experience when I was at Birmi...I had much the same experience when I was at Birmingham. <br /><br />Agda is much more uniform than Haskell, and the absence of things like nontermination and seq mean you can tell fewer lies about what is going on. Eg, you can teach how to prove programs correct by induction without having to handwave about nontermination. (To clarify, I mean pen-and-paper proofs, not Agda-based very dependent types.)<br /><br />In particular, Agda has a pretty good termination checker, which means you can use it as a vehicle for Turner's "strong functional programming" without too much trouble.<br /><br />If Agda's codegen were a bit closer to production grade, I would strongly suggest replacing Haskell with it as a vehicle for teaching functional programming. As it is, I think the case is arguable but not a slam dunk.Neel Krishnaswamihttps://www.blogger.com/profile/06853898957395028131noreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-66622137410768556542017-10-17T12:54:38.009+01:002017-10-17T12:54:38.009+01:00It depends. Do you want to teach static typing as ...It depends. Do you want to teach static typing as well? Or dynamic language? we use haskell at the argentine university UTN and we use it as a vehicle to teach static typing as well in constrast to the dynamism of smalltalk. So the sometimes baroque error messages are part of the learning, so to speak. Besides it's purely functional. <br /><br />If you prefer dynamic, I agree, scheme/racket is a great choice, and ultimately it opens the door for learning how to do fun things in a dynamic, live environment, not unlike Smalltalk.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-6881171141069217732017-10-17T09:06:02.476+01:002017-10-17T09:06:02.476+01:00Coming from C to Java to Python again to Java and ...Coming from C to Java to Python again to Java and currently developing almost everything in JavaScript/TypeScript in an mostly functional style I can say the biggest problem for me learning Haskell is to get all the knowledge together to "get things done". <br /><br />If I compare this with other programming platforms like nodeJS were the hello world example is a web server and compare this with Haskell where their example is quicksort, the intention is a totally different. With the first example I can solve a real life problem with the second one "oh great I can also sort stuff in Haskell as I can in JavaScript". That is not my opinion but I can understand if people give up in further learning and choose languages like Go or NodeJS.<br /><br />I have no doubt that Haskell has a bright future. I haven't programmed anything until now in Haskell but it has all the strengths you want from a modern programming language to solve complex problems.<br /><br />So skipping some of the amazing part like the static type system seems wrong to me. From my experience in the JS community I can say that the trend goes always in the direction of strong typing.Maltehttps://www.blogger.com/profile/15452585238585478614noreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-33999796714440537592017-10-17T08:01:11.897+01:002017-10-17T08:01:11.897+01:00Thanks for your thoughtful comments!
Thanks for your thoughtful comments!<br />Anonymoushttps://www.blogger.com/profile/02841876350884552299noreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-48279250061031803732017-10-17T08:00:55.179+01:002017-10-17T08:00:55.179+01:00It's not quite a simple as to say that it orig...It's not quite a simple as to say that it originated from research. There was an active standards process at the start of its life, but latterly it has been driven more by community enthusiasm and contributions to GHC, which has been an extraordinary phenomenon. But, it has continued to grow …Anonymoushttps://www.blogger.com/profile/02841876350884552299noreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-43918379920484239922017-10-17T07:58:52.326+01:002017-10-17T07:58:52.326+01:00Intrigued to hear that Agda went better … I can se...Intrigued to hear that Agda went better … I can see that it's not so well supported, but there is a good book out there, I believe :-)Anonymoushttps://www.blogger.com/profile/02841876350884552299noreply@blogger.comtag:blogger.com,1999:blog-6712179876742604415.post-13805334998547207812017-10-17T07:56:57.698+01:002017-10-17T07:56:57.698+01:00Yes, I guess one route is Haskell via Elm, and it ...Yes, I guess one route is Haskell via Elm, and it would be interesting to hear if anyone has tried that.Anonymoushttps://www.blogger.com/profile/02841876350884552299noreply@blogger.com