F# Down Under by Sashan Govender
46:49
19 сағат бұрын
Lessons learnt by Mikael Tönnberg
1:07:16
Пікірлер
@blankboy-ww7jt
@blankboy-ww7jt 6 күн бұрын
Cool talk, hope to see more demystify content like this. Though the speech could be improved, but it's fine afterall.
@AlexanderGranin
@AlexanderGranin 5 күн бұрын
Oh, thanks! Maybe, you'll be interested in my talk "Functional Programming: Failed Successfully" then. It demystifies a lot. I wish my speech to be improved. Not only Engilish, but also my native Russian. I'm more writer than speaker, yes...
@georgerogers1166
@georgerogers1166 6 күн бұрын
Yes. And object orientation is antithetical to software engineering.
@AlexanderGranin
@AlexanderGranin 6 күн бұрын
🤔🤔🤔
@migalejo85
@migalejo85 7 күн бұрын
Really interesting stuff, lot of things i actually used, but didn't fully get. The presentation made some things clearer. Thanks
@laughingvampire7555
@laughingvampire7555 16 күн бұрын
you don't have mutable data, data is always immutable, what is mutable is the memory, the storage where we put that data in. Variables & pointers are an abstraction on memory, for direct & indirect access respectively, and what functional programming is about is to make our code dependent on values and not on memory locations, traditionally the FP community call this, referential transparency, but the clever guys for the imperative world have given it a better name, value semantics.
@laughingvampire7555
@laughingvampire7555 16 күн бұрын
ok, tell me you don't understand types without telling me you don't understand types. *types don't fix the understanding of anything.* *types are markets, tags that track code where certain assumptions about the code where made* so when you need to make changes you can follow the types and change all the places where you have changed your assumptions and understanding.
@nutelhere
@nutelhere 18 күн бұрын
the anonymous tagged union is the breakthough
@laughingvampire7555
@laughingvampire7555 20 күн бұрын
I have to admit, I love ML syntax, it looks so much cleaner to me than other languages, some people prefer the English looking stuff but for programming languages English looking stuff is sub-optimal for my taste. I still prefer S-expressions syntax. people don't understand how to code with Dynamic languages. the main mistake they make is to focus only on types, also if your reference as dynamic language is Python or Ruby then you are lost. Your reference should by Common Lisp & Smalltalk & Erlang, those are the real dynamic languages, Ruby & Python follow the same static philosophy of UNIX, even som lisps like Scheme & Emacs lisp & some smalltalks like GNU Smalltalk follow the static nature. Common Lisp & Squeak Smalltalk are the standard for Dynamic languages.
@momo-dm3rw
@momo-dm3rw 21 күн бұрын
Thank you very much for this presentation
@michielnass4836
@michielnass4836 Ай бұрын
Thanks for a look in the F# kitchen. I am lucky for getting to use F# for my job. You are all doing a great job thanks!
@andmal8
@andmal8 Ай бұрын
This is an awesome video, just what is needed to enlighten things about Haskell-related stuff, and that it is really interesting and nice to do :)
@СергейГалиуллин-п9ю
@СергейГалиуллин-п9ю Ай бұрын
Give us the BEAM and Roc will become the ultimate overlord 3000 language of all the predictable futures
@WiecejNoxiego
@WiecejNoxiego 25 күн бұрын
Maybe there could be some BEAM platform for Roc? I personally appreciate that it doesn't run (or doesn't have to run) on VM.
@СергейГалиуллин-п9ю
@СергейГалиуллин-п9ю 25 күн бұрын
@@WiecejNoxiego sure, that's the best way indeed. Imagine web servers written in ROC, both front and back ends, running on BEAM, type safe, no runtime errors etc etc.
@WiecejNoxiego
@WiecejNoxiego 25 күн бұрын
@@СергейГалиуллин-п9ю I didn't explore ROC much yet (still waiting for it to mature a bit), but personally I'd be more interested in if it's possible to create platform for creating web servers with OpenAPI out of the box. It'll definitely be interesting to see how much features platforms can abstract from applications. Beam is nice, but it's probably overkill for most web servers and you probably take big performance hit for all its' features.
@ukasztrojanowski3149
@ukasztrojanowski3149 Ай бұрын
Oh, wow. A couple months ago I was thinking about how it would be possible to write extensible software without compromising on security, the idea of platforms is super interesting, and could be this languages killer feature
@ralfkretzschmar8131
@ralfkretzschmar8131 Ай бұрын
@19:00: The type system can actually help you: type AddIns = "a" | "b" | "c" | "d"; type SelectedAddIns = { [key in AddIns]?: number; }; const coffeeForMe: { selectedAddIns: SelectedAddIns } = { selectedAddIns: { a: 1, x: 5, // <-- This is not covered by the type definition. Keys must be one of AddIns }, };
@valcron-1000
@valcron-1000 Ай бұрын
It's always the jump from the free monad to actually extensible effects that trips me. It's reasonable how you can handle a single effect by encoding it as a value and threading it, but the moment you introduce multiple effects things get quite complicated, specially the part where you track at the type level which effects have already been handled. Unfortunately this presentation did not get to that part 😞
@kitlangton
@kitlangton Ай бұрын
I bit off a bit more than I could chew in an hour and fifteen minutes, unfortunately ☹. I may come back to this someday!
@DaRkShadOwxXx14
@DaRkShadOwxXx14 2 ай бұрын
The genius of that data structure. It's part of the niceness of JSON or dot files. Must've been tortuous for Microsoft engineers to stitch together COM, let alone the varying NET Frameworks (and their respective convoluted graphical kits)
@portal_narlish3710
@portal_narlish3710 2 ай бұрын
Very effective talk 😂
@amigalemming
@amigalemming 2 ай бұрын
1:07:00 The Pseudoinverse of a matrix is also defined for non-square matrix, that's why it is the Pseudoinverse and not the plain matrix inverse. Hmatrix.pinv supports that (like Numeric.LAPACK.Singular.pseudoInverseRCond).
@amigalemming
@amigalemming 2 ай бұрын
1:00:00 I'd like to see how the famous proof of the uniqueness of the Pseudo inverse given the Penrose axioms can be writtenin Agda.
@PiotrTajchman
@PiotrTajchman 2 ай бұрын
Just don't.
@kaansouth8789
@kaansouth8789 3 ай бұрын
This language is so cool!
@JanusTroelsen
@JanusTroelsen 3 ай бұрын
People have been using multiple languages since forever. Linker scripts, make files, autoconf, the list goes on. Also, how is this related to functional programming? It looks might it might be related to dataflow programming, but i don't see higher order functions
@edwarddejong8025
@edwarddejong8025 3 ай бұрын
If you read the Turing Award lecture by John Backus who invented functional programming, he talks about software interchangeable parts, and making large programs out of smaller pieces. So this is an attempt to offer a more Lego-like experience for coding, where you snap together small chunks of code. You are correct it doesn't resemble languages like Haskell. Higher order function capability is expressed rather differently, but it has the same result. Hard to explain in a paragraph.
@isaactfa
@isaactfa 3 ай бұрын
I love the mortgage calculator as an example of a responsive layout because when flipping the screen the layout itself doesn't change at all, everything just gets wider by a seemingly completely arbitrary amount so that nothing lines up anymore. I also love the color picker. It's very responsive until the available vertical space gets too small and it hits a debugger break point and freezes the application. Very production ready. It also really doesn't want to starts scrolling, it just shrinks and/or hides content.
@edwarddejong8025
@edwarddejong8025 2 ай бұрын
I updated the Color picker to accommodate super low vertical space, by dropping the web palette if the total screen height is below a certain threshold. It is intended for desktop computer use and tries to make the color swatches large enough to be useful
@viniciusataidedealbuquerqu2837
@viniciusataidedealbuquerqu2837 3 ай бұрын
I wasn't expecting this version of the language to be so good. the ! operator is beautiful
@zcizzorhandz5567
@zcizzorhandz5567 3 ай бұрын
I'm tired of the hobby languages, what problem is Roc solving specifically? If there's no specific problem it solves it's a waste of time.
@DavidAguileraMoncusi
@DavidAguileraMoncusi 3 ай бұрын
What about "making prototyping type safe"?
@Kyler1Ace
@Kyler1Ace 3 ай бұрын
Really not a fan of the idea of "try->throw->catch-> try again inside the function that threw" idea near the end, that sounds like itd be extremely hard to reason through. Maybe resumes that affect the control flow of the thrower should explicitly be passed in as an argument and if they dont apply they go back up as normal and if they do they try the passed in thing
@BlowaterNostr
@BlowaterNostr 3 ай бұрын
Roc has matured a lot since last time I watched Richard's talk. Will give it a try!
@budiardjo6610
@budiardjo6610 4 ай бұрын
wow, this person need to speak more. really nice project.
@c4tubo
@c4tubo 4 ай бұрын
Wow, that's big news about you joining Zed. Grats for that. Looks like Roc is ready for someone (probably me) to implement Bye Bye Hello World.
@Rene-tu3fc
@Rene-tu3fc 4 ай бұрын
haskell + rust + typescript. very interesting
@godDIEmanLIVE
@godDIEmanLIVE 4 ай бұрын
Richard is a fantastic presenter.
@valerysmirnov9535
@valerysmirnov9535 4 ай бұрын
Sounds like mixture of OCaml and Nim with a platforms feature. Sounds great
@godDIEmanLIVE
@godDIEmanLIVE 4 ай бұрын
Nim mentioned.
@thepatzer
@thepatzer 4 ай бұрын
A bit like Gleam without the BEAM?
@verified_tinker1818
@verified_tinker1818 Ай бұрын
Looks as different from Gleam as it is from Rust.
@RobertLJ11
@RobertLJ11 4 ай бұрын
Thanks for the talk and demo..😀 I'm looking forward to trying out the language.
@tlacmen
@tlacmen 4 ай бұрын
Would it be possible to use Roc as a scripting language in a game? Writing a custom platform to provide all interactions with the game. And have it safely run on players pc?
@KyleSmithNH
@KyleSmithNH 4 ай бұрын
I would think so - it can compile to webassembly so there's at least an intention for the output artifact to be variable (and based on the platform?). Or do you mean people would write Roc _in_ the game? The REPL on their website means they've managed to embed the language and runtime, so you could too (not that it would be easy, haha).
@svenvancaem360
@svenvancaem360 4 ай бұрын
Yeah totally! Last I checked, someone in the Roc Zulip chat was working on exactly that already!
@fluffyunicorn7155
@fluffyunicorn7155 4 ай бұрын
It will be interesting to see the governance model for this language. I have used Elm in the past. Richard was also part of the Elm team. Elm is “public source” and not open source. You can not meaningfully contribute to the language if you are not part of the team. It is also the only language I know where FFI can only be used by packages that the language authors write. I will not use any language that has not reached 1.0 yet if I’m not comfortable that I can fix the bugs in the language that I run into.
@clo4
@clo4 4 ай бұрын
Roc is very much true open source. The largest contributor isn’t even Richard anymore, and there are loads of people that have made very meaningful contributions.
@MorganEarlJones
@MorganEarlJones 4 ай бұрын
it's unusual to follow along with a video where the person live coding is using 1 release ahead of what the github pushes for every package lol I guess this video will stay relevant for longer that way though
@notoriouslycuriouswombat
@notoriouslycuriouswombat 4 ай бұрын
someone get this man a bag of money, its stuff like this that can take Fsharp to many more users
@michaelmaloney3027
@michaelmaloney3027 4 ай бұрын
The REPL is broken on the front page: i.imgur.com/9biAk8A.png
@rosscousens6263
@rosscousens6263 4 ай бұрын
Richard Feldman is such an engaging and captivating presenter. He comes across as congenial and curious and it's always a pleasure to watch his talks. Really rooting for roc and I can see it's getting to a point where I could start using it myself!
@JT-mr3db
@JT-mr3db 4 ай бұрын
Very interesting. If I’m not mistaken, different platforms could have completely different implementations of Stdin and Stdout?
@СергейМакеев-ж2н
@СергейМакеев-ж2н 4 ай бұрын
Different platforms could have completely different APIs, or different implementations of the same APIs. Or they can have their own constraints on the Main that you're supposed to export (e.g. list of errors allowed on the top level, which the platform will then process).
@yurtle1851
@yurtle1851 4 ай бұрын
🔥
@web3tel
@web3tel 4 ай бұрын
It is amazing, looks like a dream came true.
@arnemartt
@arnemartt 4 ай бұрын
Wonderful talk, Richard is always on point, super engaging and insightful. Gotta turn off copilot though 😅
@rtfeldman
@rtfeldman 4 ай бұрын
Personally I usually have it turned off, but a lot of people ask me what the experience is like when Copilot encounters a language that isn't in its corpus, so I wanted to include that in the demo. 😄
@arnemartt
@arnemartt 4 ай бұрын
@@rtfeldman Hey, you're here! I've been following the development of Roc for a while and watched several of your talks, I love the language and I love your style and voice. Can't wait to see where Roc goes next 🙌
@rtfeldman
@rtfeldman 4 ай бұрын
Thanks, appreciate it! I also don't usually read KZbin comments, but sometimes people point them out to me 😆
@adelarsq
@adelarsq 4 ай бұрын
Cool! Thanks for share!
@edbrito-swdev
@edbrito-swdev 4 ай бұрын
I'm very excited to watch this through. Roc, along with Zig, is one of the newer programming languages that's grabbing my attention!
@ssmith5048
@ssmith5048 4 ай бұрын
zig is hardly new.... but yet still not stable.
@kitlangton
@kitlangton 4 ай бұрын
Woo! Roc! 🎉
@masynchin
@masynchin 4 ай бұрын
Bro just invented Free Monad
@kitlangton
@kitlangton 4 ай бұрын
😜It's true. Though, I didn't explicitly state as much. One of the goals of this talk was to arrive at the Free Monad naturally by solving a series of concrete problems with our DSL. Hopefully, this made the design seem intuitive and almost obvious, even to those unaware of such concepts. Every functional effect system contains the Free Monad among its ingredients. Of course, Algebraic Effects build upon this by allowing for arbitrary, user-extensible syntax and interpretation.
@Quehuongbinhphuoc
@Quehuongbinhphuoc 5 ай бұрын
❤❤👆😃
@DisFunctor
@DisFunctor 5 ай бұрын
Awesome talk! 1:01:41 was that a family guy reference I spotted? 😄
@alex.boisvert
@alex.boisvert 5 ай бұрын
Thank you Kit! The progressive enhancements and your animations made it very easy to follow. Love your enthusiasm.
@kitlangton
@kitlangton 5 ай бұрын
Hey! Thanks ❤
@myang3686
@myang3686 4 ай бұрын
000