Conversation
Edited 13 days ago

a problem that I often run into when learning a new Tech Thing is figuring out how to apply the knowledge that I’m learning about, without asking myself to do something that’s too hard with my current knowledge. but this Haskell MOOC does all the work for me and that’s amazing

specifically it comes with a git repo that I can clone. for each chapter there’s a premade file full of stub code and comments that describe what the code should do. and I just edit the stub code in order to make it work. then there’s another file that I can run to unit-test those challenges. that way I instantly know if I did each challenge right

this is genuinely a lot of fun to do and it helps reassure me that I am actually absorbing the information that I’m reading

I really wish that there were more courses(?) like this for learning tech stuff. even just something at the end of each chapter like “here are some optional challenges that you might want to try at this point” would go a long way

2
2
4

if anybody knows where I can find more tech tutorials/courses/etc. with built-in challenges I would love to hear about it! this is a dramatically better way for me to learn and I didn’t realize it was a possibility until now

3
1
2

@kasdeya I used to search for "interactive tutorial", but it won't distinguish the one's with challenges.

1
0
1

also Haskell is fun to play with so far! it has lots of cool ideas like how operators are functions (so you can use them in polish notation if you want) and functions can be used as operators (specifically you can use them in infix-notation if you want)

I haven’t learned how to do anything practical with it yet but I think if I jumped right to the practical uses for it my brain would explode. I’m still coming to grips with basic stuff like, how to avoid off-by-one errors when you have to recurse instead of looping

also I still can’t read the documentation at all lol so I can only go back and reread parts of the tutorial that I’m following. that’s a bit of a problem but hopefully eventually I’ll learn how to read the docs

1
0
5

@goose ooh that’s a great term to know! thank you

0
0
1

@kasdeya You may enjoy what https://mooc.fi/en/ has to offer in general. Cyber Security Base for example is another that I've done (halfway), focusing on Python and Javascript for, you guessed it, cyber security stuff. There are other courses with such testing methods out there as well, but I don't know all of them.

Then there's https://cses.fi/, which gets more demanding. At least Algorithms in Problem Solving (written on site as Algoritmit Ongelmanratkaisussa) is a rather heavy problem set for those that wish to learn how to properly optimise algorithm performance. It can be done in C++, Haskell or Rust. And there are occasional programming contests over there.

1
0
1

@kasdeya By the way, which documentation set are you referring to? I know there are some very interesting and category theory heavy documents out there which could be less than useful for a beginner. You could check the library reference https://hoogle.haskell.org/ if you haven't yet, it could be more digestible.

1
0
1

@fargate I think I was finding more advanced Haskell features on this site out-of-context lol - especially the typeclass related stuff

although using this I was able to figure out how to get a list of all operations that I can do on strings! if I search for [Char] I only find String constants, but if I search for Char then it brings me to Data.Char which is exactly what I’d want. although I don’t understand the “instances” section yet hehe. but everything else makes sense!

although, how do I find the equivalent of Data.Char but for [a] types instead? if you don’t mind explaining. I tried searching for [a] but that didn’t get me anywhere and this search intimidates me to be honest. I don’t understand what a lot of this stuff means hehe

like for example do I need to be able to use the dropdown to the left of the “search” button? that thing looks really complicated and there are so many options T_T and then when I search do I need to understand the text in green under each function, or the green text to the left under “packages”?

1
0
0

@fargate oohh thank you! I’ve been looking at mooc.fi and after I’m done with this Haskell MOOC I might try some of the others. although cses.fi intimidates me a bit more since a lot of it is in Finnish and it looks much more serious hehe

1
0
1

@kasdeya I'll start with the shortest one to explain: The dropdown by the search button is a filter. set:stackage includes most of everything, set:included-with-ghc the stuff that comes with the most common compiler install, and the package:xyzs are more or less the same as putting +xyz into the search field itself.

Now, about the generic functions on lists. This is where we'll run into typeclasses again, as most list functions have been generalised to work on anything that's in the Foldable typeclass. So one would need to search for generic list functions with Foldable t => t a -> b syntax, for example. You may benefit from getting further on in the Haskell Mooc before attempting to mentally parse all that. Also the instances section is about what typeclasses the type is a member of and how the required methods have been implemented, so that'll also come in due time.

1
0
1

@kasdeya As for the text in green under the function name, that's what packages that function is supplied by. For instance, the function head :: HasCallStack => [a] -> a is in base and Prelude, so it is available more or less always, but it can also be found implemented in Data.List or GHC.List modules.

As for the stuff on the left, eh, I never figured out its purpose. It's probably not important, but now having poked at it it allows refining the search query by adding package constraints. Like if searching for head, one can then click on the button saying lens to refine the query into head package:lens for only searching for occurrences in the package, or head -package:lens if clicking on the minus sign which, as one might assume, specifically excludes said package.

0
0
1

@kasdeya https://cses.fi/ will intimidate just about anyone, language issues or not. It's a merciless place of the old net, rough in its looks and efficient under the hood. It's for the competitive programming hobbyists first, and all else second. I don't blame you for catching on to its aura.

0
0
0

@kasdeya I think rustlings is pretty close? https://rustlings.rust-lang.org/ and then this one is totally amazing where you program in subleq for the sic-1, and you get these cute emails like you're a worker from decades ago and whatnot https://jaredkrinke.itch.io/sic-1

2
1
1

@kasdeya Oh also, thanks for sharing that about this Haskell course! I'd bookmarked it at some stage, and now knowing they have a nice setup like that actually makes it very tempting

1
0
1

@jbc ooh this is so cool! I might try this if I want to get into Rust again in the future. thanks for sharing

0
0
1

@jbc no problem! if you end up trying it I hope you like it. I got pretty overwhelmed and stopped tbh but I think that’s just because I’ve been going through everything way too fast lol and maybe should’ve slowed down and absorbed the information more, and maybe redone the earlier problems to practice and cement my knowledge more

0
0
1