companion_cube changed the topic of #ocaml to: Discussion about the OCaml programming language | http://www.ocaml.org | OCaml 5.2.0 released: https://ocaml.org/releases/5.2.0 | Try OCaml in your browser: https://try.ocamlpro.com | Public channel logs at https://libera.irclog.whitequark.org/ocaml/
dstein64- has joined #ocaml
dstein64 has quit [Ping timeout: 276 seconds]
dstein64- is now known as dstein64
YuGiOhJCJ has joined #ocaml
mange has joined #ocaml
terrorjack has quit [Quit: The Lounge - https://thelounge.chat]
terrorjack has joined #ocaml
hsw has quit [Remote host closed the connection]
hsw has joined #ocaml
switchy has quit [Ping timeout: 248 seconds]
switchy has joined #ocaml
Frostillicus has joined #ocaml
Frostillicus has quit [Ping timeout: 245 seconds]
Frostillicus has joined #ocaml
Frostillicus has quit [Ping timeout: 276 seconds]
j0lol has quit [Remote host closed the connection]
j0lol has joined #ocaml
Frostillicus has joined #ocaml
switchy has quit [Remote host closed the connection]
switchy has joined #ocaml
Frostillicus has quit [Ping timeout: 252 seconds]
<discocaml> <aeseia> For what reasons is C++ used over Rust in HFT (I have seen job apps for HFT in Rust but I am under the impression C++ is bigger)? I'm very far from that world so I wouldn't know.
<discocaml> <aeseia> - existing talent on the market
<discocaml> <aeseia> - existing systems written in C++
<discocaml> <aeseia> - more knowledge about whatever cache locality / compiler quirks that lead to fast or slow codegen
<discocaml> <aeseia> - less pinvoke
<discocaml> <aeseia> ?
bartholin has joined #ocaml
Haudegen has joined #ocaml
<discocaml> <barconstruction> I try to keep up to date with research in theorem provers for mathematics and I found this guy Chad Brown who built a theorem prover for Tarski-Grothendieck set theory. The reference manual explains that ordinary ML style type polymorphism is heavily restricted because in his words "polymorphism is evil". The phrase "polymorphism is evil" actually appears throughout a lot of the guys writing. Truly one of the more bizarre takes I've se
<discocaml> <barconstruction> A term can be applied to up to three types. So you can have terms that are polymorphic over at most three type variables
<discocaml> <barconstruction> Really interesting.
<discocaml> <shadowkestrel> i dont think he likes polymorphism
<discocaml> <edhebi> the existing stuff is already in C++, and C++ has a larger ecosystem of tools in that domain (at least for now). The performance characteristics of C++ are also better understood and more predictable overall tho it's very context dependant
inline has quit [Remote host closed the connection]
inline has joined #ocaml
Serpent7776 has joined #ocaml
Tuplanolla has joined #ocaml
<discocaml> <cod1r> it's also a snowballing thing
<discocaml> <cod1r> more people know c++, means more people will get exposed to c++, etc etc
<discocaml> <five.sided.fistagon> rich get richer
dhil has joined #ocaml
inline has quit [Remote host closed the connection]
inline has joined #ocaml
<discocaml> <peuk> C++ get C#
<discocaml> <peuk> Wait
<discocaml> <jalsol> and there's Jane Street who can convince people to use OCaml
<discocaml> <cod1r> yea
<discocaml> <cod1r> very talented people building very sophisticated things
<discocaml> <jalsol> it's pretty much an anomaly
<discocaml> <jalsol> if Yaron Minsky can convince very smart people to use OCaml, why is there no one that's doing the same with, say, Rust
<discocaml> <cod1r> there's isnt one person doing it though
<discocaml> <cod1r> RIIR is a thing
<discocaml> <peuk> Rust is already convincing for a lot of people. But there is still major barriers to adoption, related to the runtime checks.
<discocaml> <cod1r> there has been literally issues made to large open source projects telling the maintainers to litearlly rewrite things in Rust
<discocaml> <cod1r> ocaml is niche bc a lot of people dont explore functional programming languages
Hikui has joined #ocaml
Hikui has left #ocaml [#ocaml]
YuGiOhJCJ has quit [Ping timeout: 244 seconds]
<discocaml> <jalsol> one (political) issue I have with Rust is that rewritten projects in Rust tend to receive big corp funding
<discocaml> <jalsol> while the original are short on money
Haudegen has quit [Quit: Bin weg.]
<discocaml> <jalsol> what I mean is in the context of HFT
<discocaml> <jalsol> the Rust hype has been around for long, big tech have more or less adopted Rust for some services, but HFT firms seem hesitant
<discocaml> <jalsol> OxCaml takes inspiration from Rust, but it ends there
gareppa has joined #ocaml
<discocaml> <JM> Didn't JaneStree start with OCaml? Migrating a big HFT codebase is another beast.
<discocaml> <JM> I don't think people who has been making a lot of money consistently with C++ will just jump to Rust because it's popular.
<discocaml> <JM> Maybe the next big Rust HFT firm is more likely to be a small Rust HFT firm today than a big C++ HFT firm.
<discocaml> <jalsol> they started with Java in 2000, and migrated in 2003 since Yaron Minsky joined
<discocaml> <jalsol> otherwise, yeah let's see in a couple of decades
gareppa has quit [Quit: WeeChat 4.5.1]
Frostillicus has joined #ocaml
Haudegen has joined #ocaml
Frostillicus has quit [Ping timeout: 252 seconds]
bartholin has quit [Read error: Connection reset by peer]
Frostillicus has joined #ocaml
bartholin has joined #ocaml
Frostillicus has quit [Ping timeout: 245 seconds]
Frostillicus has joined #ocaml
Frostillicus has quit [Read error: Connection reset by peer]
Frostillicus has joined #ocaml
mange has quit [Quit: Zzz...]
<discocaml> <microwave3607> time to learn ocaml
<discocaml> <microwave3607> my problem with Rust is that I thought it would be cooler
<discocaml> <microwave3607> like, it's not bad, but it isn't even that interesting
<discocaml> <hungrystackofpancakes> who told you that learning rust mke you cooler
<discocaml> <hungrystackofpancakes> who told you that learning rust make you cooler
<discocaml> <microwave3607> I thought it was like
<discocaml> <microwave3607> an interesting language
<discocaml> <microwave3607> it has some cool stuff
<discocaml> <hungrystackofpancakes> sure in its own design (borrowing checkers)
<discocaml> <microwave3607> borrow checker isn't even that interesting
<discocaml> <hungrystackofpancakes> but that does not mean it would make you cooler
<discocaml> <microwave3607> it's pretty lame, it asks too much and gives too little
<discocaml> <hungrystackofpancakes> is like learning cobol or assembly just to be cooler
<discocaml> <microwave3607> I didn't want to be cooler, I wanted to have fun
<discocaml> <microwave3607> rust isn't that fun
<discocaml> <hungrystackofpancakes> that is a fair reason
<discocaml> <microwave3607> I was reading about Ada
<discocaml> <microwave3607> Ada has some cool stuff
<discocaml> <hungrystackofpancakes> ada core no longer support community build
<discocaml> <hungrystackofpancakes> meaning it managed by the community
<discocaml> <hungrystackofpancakes> called alire
<discocaml> <hungrystackofpancakes> they introduce package manager
<discocaml> <microwave3607> I saw
<discocaml> <microwave3607> I thought it was awesome
<discocaml> <hungrystackofpancakes> but most are ripoff or rust
<discocaml> <hungrystackofpancakes> but most are ripoff of rust
<discocaml> <microwave3607> It has a lot more of garantees than rust
<discocaml> <microwave3607> and it's way more elegant
<discocaml> <hungrystackofpancakes> ada used to be cool
<discocaml> <hungrystackofpancakes> but after the collapse of community build
<discocaml> <hungrystackofpancakes> it lost the respect
<discocaml> <hungrystackofpancakes> it lost its respect
<discocaml> <microwave3607> it actually got better, now we do not depend that much of adacore
<discocaml> <microwave3607> and adoption is getting back
<discocaml> <hungrystackofpancakes> bold claim
<discocaml> <hungrystackofpancakes> ada is mostly dead tbh
<discocaml> <microwave3607> it's very niche, I won't be expecting to see much of it
johnridesabike has joined #ocaml
<discocaml> <hungrystackofpancakes> i wish they use gnatmake
<discocaml> <hungrystackofpancakes> it would make ada original;
<discocaml> <hungrystackofpancakes> now its blatent rust ripoff [alire]
<discocaml> <hungrystackofpancakes> now its blatant rust ripoff [alire]
<discocaml> <microwave3607> ooh
<discocaml> <microwave3607> now I understood
<discocaml> <microwave3607> I thought it was a rust ripoff because of its features
<discocaml> <hungrystackofpancakes> no
<discocaml> <microwave3607> I was pretty confused
<discocaml> <microwave3607> you are talking about tooling
<discocaml> <hungrystackofpancakes> the alire is what make ada
<discocaml> <hungrystackofpancakes> like rust
<discocaml> <microwave3607> ye ye ye
<discocaml> <microwave3607> got it
<discocaml> <microwave3607> I still didn't used much
<discocaml> <microwave3607> it won't be as big as rust ever
<discocaml> <microwave3607> because people like bad languages *cough* *cough*
<discocaml> <hungrystackofpancakes> describe bad
<discocaml> <hungrystackofpancakes> what bad languages
<discocaml> <microwave3607> typescript
<discocaml> <hungrystackofpancakes> eh its not too bad
<discocaml> <hungrystackofpancakes> javascript is indeed a bad language
<discocaml> <jalsol> it can get kind of bad
<discocaml> <microwave3607> typescript is cool if you don't want to take the type part seriously
<discocaml> <hungrystackofpancakes> tho what language are you really want to learn
<discocaml> <hungrystackofpancakes> what is your goaal
<discocaml> <hungrystackofpancakes> what is your goal
<discocaml> <jalsol> OCaml is my fav rn and I doubt it's gonna change soon
<discocaml> <hungrystackofpancakes> haskell
<discocaml> <microwave3607> haskell is awesome
<discocaml> <microwave3607> I love haskell
<discocaml> <jalsol> nah it was my first FP
<discocaml> <jalsol> did not like it
<discocaml> <microwave3607> fair
<discocaml> <hungrystackofpancakes> i hate langauge when they are `first`-paradigm
<discocaml> <hungrystackofpancakes> i hate langauge when they are `only`-paradigm
<discocaml> <hungrystackofpancakes> like haskell
<discocaml> <jalsol> nah it was my first FP language
<discocaml> <hungrystackofpancakes> i don't like always functional
<discocaml> <hungrystackofpancakes> or C
<discocaml> <hungrystackofpancakes> not a fan always procedural
<discocaml> <microwave3607> I like when language go crazy, like FULL FUNCTIONAL
Frostillicus has quit [Ping timeout: 260 seconds]
<discocaml> <jalsol> eh I can live with C
<discocaml> <hungrystackofpancakes> C is only exception
<discocaml> <microwave3607> or FULL IMPERATIVE DECLARATIVE
<discocaml> <microwave3607> pascal
<discocaml> <microwave3607> pascal is cool too
<discocaml> <hungrystackofpancakes> freepascal is multi
<discocaml> <microwave3607> is it?
<discocaml> <hungrystackofpancakes> oop? sure
<discocaml> <hungrystackofpancakes> functional? yes
<discocaml> <hungrystackofpancakes> procedural? no problem
<discocaml> <microwave3607> it has higher order functions?
<discocaml> <hungrystackofpancakes> freepascal has it all
<discocaml> <hungrystackofpancakes> you can mimic
<discocaml> <hungrystackofpancakes> not really pure functional
<discocaml> <microwave3607> hummm
<discocaml> <microwave3607> I want to learn Ada
<discocaml> <hungrystackofpancakes> ada is big
<discocaml> <microwave3607> but I'm learning OCaml
<discocaml> <hungrystackofpancakes> [as an core feature]
<discocaml> <microwave3607> it is
<discocaml> <microwave3607> and it is pretty cool
<discocaml> <hungrystackofpancakes> i still use C++
<discocaml> <jalsol> idk what else to learn, I'm happy with OCaml
<discocaml> <hungrystackofpancakes> cause its the only lang i actually know how to write one properly
<discocaml> <jalsol> I tried Scala and did not like it either
<discocaml> <microwave3607> just get something to go full out of the comfort zone
<discocaml> <microwave3607> just for fun
<discocaml> <Kali> lua is a fun language
<discocaml> <microwave3607> ^
<discocaml> <hungrystackofpancakes> always procedural
<discocaml> <hungrystackofpancakes> not a biggest fan
<discocaml> <hungrystackofpancakes> but a fan for embedding
<discocaml> <Kali> you can do functional stuff with lua just fine
<discocaml> <microwave3607> it has HOF
<discocaml> <Kali> it even has tail calls
<discocaml> <hungrystackofpancakes> true
<discocaml> <jalsol> Scala is very slow to compile and there's no Hindley Milner type inference
<discocaml> <hungrystackofpancakes> lua support functional out of the box
<discocaml> <hungrystackofpancakes> lazy evalution? yes
<discocaml> <hungrystackofpancakes> closure? no problem
<discocaml> <jalsol> lua indices starts at 1
<discocaml> <hungrystackofpancakes> so what do you guys think about lisp
<discocaml> <microwave3607> best idea ever
<discocaml> <microwave3607> incredible
<discocaml> <hungrystackofpancakes> lisp is cool
<discocaml> <microwave3607> lisp is very fun
<discocaml> <hungrystackofpancakes> but i want it to be supported in MSDOS 6 or windows 95
<discocaml> <jalsol> I don't like writing sexp
<discocaml> <microwave3607> I generally don't like weak typing and dynamic typing, but lisp is so good and fun
Frostillicus has joined #ocaml
<discocaml> <hungrystackofpancakes> rust really shadowed ocaml
<discocaml> <hungrystackofpancakes> despite being written by ocaml
<discocaml> <microwave3607> they are too different
<discocaml> <hungrystackofpancakes> even tho
<discocaml> <microwave3607> I think it actually helped ocaml
<discocaml> <hungrystackofpancakes> rust is written in ocaml (as a first compiler)
<discocaml> <hungrystackofpancakes> before it was bootstrapped themself
<discocaml> <hungrystackofpancakes> before they bootstrapped themself
<discocaml> <microwave3607> lots of people now know that ocaml exists because of rust
<discocaml> <hungrystackofpancakes> do not forget about `haxe`
<discocaml> <microwave3607> I really don't know how rust is so used. it was some mozilla money?
<discocaml> <microwave3607> ye
<discocaml> <hungrystackofpancakes> who knows
<discocaml> <jalsol> big tech and propaganda
<discocaml> <microwave3607> I really disliked it
<discocaml> <microwave3607> it's not bad
<discocaml> <hungrystackofpancakes> propaganda is very real
<discocaml> <hungrystackofpancakes> i HATE the `rewrite everything in rust`
<discocaml> <jalsol> the guy who created Rust now works on Swift
<discocaml> <microwave3607> but like, memory safety is cool and all but bugs can happen because of logic stuff
<discocaml> <microwave3607> and there isn't even an equivalent of `const T&`
<discocaml> <hungrystackofpancakes> even if they could do memory safety in compile-time in rust
<discocaml> <jalsol> I did mention that the rewrites getting more funds than the original is a major concern for me
<discocaml> <hungrystackofpancakes> they can't escape runtime failure
<discocaml> <hungrystackofpancakes> and logic failure
<discocaml> <hungrystackofpancakes> they can't escape runtime error
<discocaml> <hungrystackofpancakes> and logic error
<discocaml> <microwave3607> logic stuff is my main problem
<discocaml> <microwave3607> because memory is easier to debug
<discocaml> <microwave3607> I really don't care much
<discocaml> <hungrystackofpancakes> is why i stick with C & C++
<discocaml> <Kali> fun thing about lua is that it's so flexible that you can sort of change that
<discocaml> <Kali> ```lua
<discocaml> <Kali> setmetatable(_ENV, {__newindex = function(t,k,v)rawset(t,k,type(v)=="table" and table.move(v,1,#v,0) or v)end})
<discocaml> <Kali>
<discocaml> <Kali> test = {"boo","far"}
<discocaml> <Kali> print(test[0]) -- boo
<discocaml> <Kali> ```
<discocaml> <hungrystackofpancakes> cause i like to debug memory to know what is wrong and what can i do to fix it
<discocaml> <microwave3607> C++ is pretty good, I just wish it was strong typed
<discocaml> <hungrystackofpancakes> it is strong typed
<discocaml> <hungrystackofpancakes> if you do `{}` on variable
<discocaml> <jalsol> I'd rather have this as the default
<discocaml> <Kali> you could even make it start at -7 if you wanted to
<discocaml> <Kali> or any number really
<discocaml> <hungrystackofpancakes> ```cpp
<discocaml> <hungrystackofpancakes> short x{ 1L } // error
<discocaml> <hungrystackofpancakes> ```
<discocaml> <hungrystackofpancakes> ```cpp
<discocaml> <hungrystackofpancakes> short x{ 1L }; // error
<discocaml> <hungrystackofpancakes> ```
<discocaml> <hungrystackofpancakes> ```cpp
<discocaml> <hungrystackofpancakes> short x = 1L; // ok
<discocaml> <hungrystackofpancakes> ```
<discocaml> <microwave3607> I don't like that you are able to implicit convert and write those crazy casts
<discocaml> <jalsol> static type != strong type is it
<discocaml> <hungrystackofpancakes> the reason why = doesn't do strict typing is to adhere C backward comptability
<discocaml> <hungrystackofpancakes> the reason why = doesn't do strict typing is to adhere C backward compatibility
<discocaml> <microwave3607> it's fun, yeah, it's fun. But I want STRONG typing
<discocaml> <hungrystackofpancakes> C++ recommends {} because it enforces strong typing
<discocaml> <microwave3607> Ada has that
<discocaml> <hungrystackofpancakes> you can do function casting
<discocaml> <hungrystackofpancakes> `short x{ short(1L) };`
<discocaml> <jalsol> smh lmao
<discocaml> <hungrystackofpancakes> you can do functional casting
<discocaml> <microwave3607> `float y = x` will still work
<discocaml> <hungrystackofpancakes> it just shorter for `static_cast`
<discocaml> <hungrystackofpancakes> no
<discocaml> <hungrystackofpancakes> well
<discocaml> <hungrystackofpancakes> yes
<discocaml> <hungrystackofpancakes> it will
<discocaml> <microwave3607> so me sad
<discocaml> <jalsol> is it?
<discocaml> <hungrystackofpancakes> but if it `float y{ x };` no longer works
<discocaml> <hungrystackofpancakes> kinda
<discocaml> <hungrystackofpancakes> both do compile-time check
<discocaml> <hungrystackofpancakes> the difference is static_cast is standard for casting
<discocaml> <hungrystackofpancakes> functional is kinda new
<discocaml> <microwave3607> I want full HARDCORE strong typing
<discocaml> <microwave3607> it's pretty fun
<discocaml> <microwave3607> Ocaml has some of that stuff
<discocaml> <microwave3607> with typing
<discocaml> <hungrystackofpancakes> then you will surely love ada
<discocaml> <microwave3607> and I find it very fun
<discocaml> <microwave3607> I liked, but I don't write critical software
<discocaml> <microwave3607> so if something is strong typed as OCaml and Haskell then it's enough
<discocaml> <hungrystackofpancakes> the downside of functional casting `T(x)` is the usage
<discocaml> <hungrystackofpancakes> it make it look like you are calling function
<discocaml> <hungrystackofpancakes> instead of casting
<discocaml> <microwave3607> the best thing about c++ is the metaprogramming
<discocaml> <hungrystackofpancakes> ```cpp
<discocaml> <hungrystackofpancakes> int x{ foo(y) }; // function
<discocaml> <hungrystackofpancakes> int y{ int(x) }; // casting
<discocaml> <hungrystackofpancakes> ```
<discocaml> <microwave3607> I can't find it useful, but I really find it fun
<discocaml> <hungrystackofpancakes> similars but different
<discocaml> <jalsol> it can be useful if you want some compile-time magic
<discocaml> <hungrystackofpancakes> just replace rust with it
<discocaml> <microwave3607> you know the reason I hate rust? `UnsafeCell`
<discocaml> <microwave3607> I really hate that you can work with `UnsafeCell` outside `unsafe`
<discocaml> <hungrystackofpancakes> mmmmm. you hate how rust treating you
<discocaml> <hungrystackofpancakes> lol
<discocaml> <microwave3607> and have interior mutability
<discocaml> <hungrystackofpancakes> ooo. ocaml support windows 95
<discocaml> <jalsol> the thing is C++ types aren't strong
<discocaml> <hungrystackofpancakes> nice
<discocaml> <jalsol> you can do weird reinterpret cast
<discocaml> <jalsol> and some dark magic tricks
<discocaml> <hungrystackofpancakes> it is not the same as static or functionl casting
<discocaml> <jalsol> things that wouldn't appear in OCaml
<discocaml> <hungrystackofpancakes> it is not the same as static or functional casting
<discocaml> <hungrystackofpancakes> reinterpret_cast is useful when you want to change data-type pointer to other data-type pointer
<discocaml> <hungrystackofpancakes> but its risky to use
<discocaml> <hungrystackofpancakes> as it do runtime casting
<discocaml> <jalsol> well strong typing isn't that much of an appeal to me, I actually am more into ADT
<discocaml> <hungrystackofpancakes> so unless you know what are you doing
<discocaml> <hungrystackofpancakes> stick with static_cast
<discocaml> <jalsol> ikr
<discocaml> <hungrystackofpancakes> ub is very likely in reinterpret_cast
<discocaml> <microwave3607> ADT is cool too
<discocaml> <microwave3607> but I don't get ADT in rust
<discocaml> <microwave3607> it just isn't ADT
<discocaml> <microwave3607> it's just tagged unions
<discocaml> <microwave3607> that look like ADT
<discocaml> <jalsol> ty for sharing but uh I know my fair share of C++ that's good enough for the job
<discocaml> <microwave3607> which isn't bad
Frostillicus has quit [Ping timeout: 260 seconds]
<discocaml> <jalsol> it's better than actually doing tagged union
<discocaml> <hungrystackofpancakes> your welcome ig
<discocaml> <jalsol> but not ADT
<discocaml> <hungrystackofpancakes> C++ support adt with classes and STL
<discocaml> <hungrystackofpancakes> C++ support it with adt with classes and STL
<discocaml> <hungrystackofpancakes> C++ support it with classes and STL
<discocaml> <microwave3607> I just `std::variant` stuff
<discocaml> <microwave3607> more than enough
<discocaml> <hungrystackofpancakes> it still class
<discocaml> <hungrystackofpancakes> variant is a class
<discocaml> <microwave3607> ye
<discocaml> <hungrystackofpancakes> of C++
<discocaml> <jalsol> I don't think std::variant + std::tuple is the same as ADT
<discocaml> <microwave3607> I'm just saying that I don't really care for ADT with cool constructors and cool things when I'm working in a imperative language
<discocaml> <hungrystackofpancakes> scala can be used for ast
<discocaml> <hungrystackofpancakes> swift too
<discocaml> <hungrystackofpancakes> scala can be used for adt
<discocaml> <hungrystackofpancakes> ocaml is one of them
<discocaml> <hungrystackofpancakes> and F# [if you like .NET]
<discocaml> <contificate> people do ADTs using tagged unions as class inheritance in C++
<discocaml> <jalsol> that is kind of uhh
<discocaml> <hungrystackofpancakes> lua can mimic adt using tables and metatables
<discocaml> <jalsol> idk it works but it's not ideal
<discocaml> <contificate> it's terrible
<discocaml> <jalsol> I have seen Python codes that did the same
<discocaml> <contificate> Python is better actually
<discocaml> <hungrystackofpancakes> i mean C++ give you fall power
<discocaml> <hungrystackofpancakes> i mean C++ give you full power
<discocaml> <hungrystackofpancakes> and full power is dangerous
<discocaml> <hungrystackofpancakes> lol
<discocaml> <jalsol> class inheritance then match on isinstance
<discocaml> <contificate> dataclasses and match in Python makes it almost untyped ML
<discocaml> <hungrystackofpancakes> C# can do discriminated unions
<discocaml> <hungrystackofpancakes> to do adt
<discocaml> <microwave3607> https://en.wikipedia.org/wiki/Gulag
<discocaml> <contificate> I don't see what's "full power" about an unergonomic way of specifying inductive data
inline has quit [Ping timeout: 252 seconds]
<discocaml> <hungrystackofpancakes> lisp is cool
<discocaml> <hungrystackofpancakes> sbcl (common lisp) can do low-level stuff [included in standard library]
<discocaml> <hungrystackofpancakes> not as low-level as C
<discocaml> <hungrystackofpancakes> but enough to do some
<discocaml> <jalsol> that's a thing I like about OCaml and dislike about other languages really
<discocaml> <hungrystackofpancakes> ocaml take away your power flexibility?
<discocaml> <jalsol> I would have to do weird workarounds to mimic something that's free in say OCaml or Haskell
<discocaml> <hungrystackofpancakes> how good is haskell
<discocaml> <hungrystackofpancakes> what is your opinion about it
<discocaml> <jalsol> I don't like it
<discocaml> <microwave3607> HASKELL IS THE BEST THING THAT EVER EXISTED
<discocaml> <jalsol> I don't feel comfortable using it
<discocaml> <hungrystackofpancakes> I guess someone has mixed feelings
<discocaml> <microwave3607> haskell is about pain
<discocaml> <microwave3607> haskell is about growing
<discocaml> <hungrystackofpancakes> C++ concepts is inspired by haskell
<discocaml> <hungrystackofpancakes> from what i know
<discocaml> <hungrystackofpancakes> C++ concepts is influnced by haskell
<discocaml> <microwave3607> is meta-typeclass
<discocaml> <hungrystackofpancakes> C++ concepts is influenced by haskell
<discocaml> <microwave3607> kinda
<discocaml> <hungrystackofpancakes> i want to know
<discocaml> <hungrystackofpancakes> does haskell support msdos
<discocaml> <hungrystackofpancakes> msdos 6 atleats
<discocaml> <hungrystackofpancakes> msdos 6 atleast
<discocaml> <microwave3607> ghc compiles to llvm now too
<discocaml> <microwave3607> can use use llvm for that?
<discocaml> <hungrystackofpancakes> ?
<discocaml> <microwave3607> the backend that compiled to C is deprecated I think
<discocaml> <microwave3607> oh
<discocaml> <microwave3607> you are saying if the compiler supports it
<discocaml> <microwave3607> sorry
<discocaml> <microwave3607> I understood it wrong
<discocaml> <microwave3607> I don't know
<discocaml> <hungrystackofpancakes> which compiler?
<discocaml> <microwave3607> ghc
<discocaml> <hungrystackofpancakes> what is that
<discocaml> <microwave3607> glasgow haskell compiler
<discocaml> <hungrystackofpancakes> idk much about haskell so idk
<discocaml> <microwave3607> the ghc has its normal machine code backend
<discocaml> <microwave3607> it had C generation
<discocaml> <microwave3607> it has llvm stuff
<discocaml> <contificate> GHC is horrendously slow as well
<discocaml> <microwave3607> js stuff
<discocaml> <microwave3607> and it has wasm too
<discocaml> <microwave3607> is it?
<discocaml> <contificate> yeah
<discocaml> <microwave3607> I found it quite ok
<discocaml> <contificate> it's hard to go from OCaml to Haskell
<discocaml> <microwave3607> it's not gcc, but it isn't rust
<discocaml> <contificate> just torture
<discocaml> <microwave3607> but generally I don't compile big things
<discocaml> <microwave3607> pandoc took some time
<discocaml> <microwave3607> but nothing too absurd
<discocaml> <contificate> I was gonna do a benchmark for you
<discocaml> <contificate> but just realised I don't even have GHC installed
<discocaml> <microwave3607> I know that OCaml compiles faster
<discocaml> <microwave3607> I expect it
<discocaml> <microwave3607> Haskell is pretty crazy
<discocaml> <contificate> to me, some styles of Haskell are tantamount to writing obfuscated programs
<discocaml> <microwave3607> I think it's fun
<discocaml> <jalsol> Haskell and the Haskell people scare everyone away from FP
<discocaml> <microwave3607> I feel smarter
<discocaml> <microwave3607> when I learn stuff from haskell
<discocaml> <contificate> Haskell is like the exception to the rule, yet it's the one everyone has heard of - sadly
<discocaml> <microwave3607> you guys just need to imagine a burrito
<discocaml> <microwave3607> then it just works by having everything being functors
<discocaml> <microwave3607> bam
<discocaml> <microwave3607> haskell
<discocaml> <jalsol> is that supposed to be a joke
<discocaml> <contificate> I meet people who haven't looked into FP because of "an monad is a monoid in the category of endofunctors"
<discocaml> <contificate> a*
<discocaml> <microwave3607> it's a good joke tho
<discocaml> <contificate> no, it isn't
<discocaml> <microwave3607> I like it
<discocaml> <jalsol> it does more harm than good
<discocaml> <jalsol> and it solidifies this
<discocaml> <microwave3607> it's haskell, you really don't expect people to really learn it
<discocaml> <contificate> people dismiss FP outright because of things people say about Haskell
<discocaml> <microwave3607> you go learn it if you are crazy enough
<discocaml> <contificate> Haskell is the poster child
<discocaml> <contificate> yet it's the one that's least like the others
<discocaml> <microwave3607> I guess it sucks to be cool af
<discocaml> <contificate> nothing cool about slow compile times and saying "typeclasses" every time you're challenged about your mediocire language
<discocaml> <contificate> nothing cool about slow compile times and saying "typeclasses" every time you're challenged about your mediocre language
<discocaml> <jalsol> if OCaml were the face of FP then FP would've been a lot more popular
<discocaml> <jalsol> hel
<discocaml> <jalsol> hell
<discocaml> <contificate> maybe you should get a Haskell job
<discocaml> <contificate> where you're gonna learning `n` Haskells, arising from `n` different collections of language extensons and random idioms your seniors learned - as a parlour trick - at a conference and use on every project
<discocaml> <jalsol> even Scala would've been better for FP than Haskell
<discocaml> <jalsol> this is so C++
<discocaml> <jalsol> unfortunately my capacity can only handle C++, it cannot add Haskell into the mix
<discocaml> <contificate> people literaly memorise C++ as though they're going to be flashcarded on it later
<discocaml> <jalsol> I just simplify stuff
<discocaml> <jalsol> either implement them all, or implement none
<discocaml> <contificate> well that would prove to me you don't know the rules
<discocaml> <contificate> as implementing one has consequences for implicitly generated special members
<discocaml> <contificate> and we'd have a 4 hour back and forth on the PR
<discocaml> <jalsol> this is the rule of 5 iirc
<discocaml> <contificate> there's 3 rules of rules, man
<discocaml> <jalsol> specified in the isocpp QnA
<discocaml> <contificate> rule of 0, rule of 5, rule of 3
<discocaml> <jalsol> there's the rule of 3?
<discocaml> <jalsol> how did I miss this part
<discocaml> <contificate> perhaps one day you'll agree with my view that
<discocaml> <jalsol> I know the rule of 0 and of 5 exist
<discocaml> <contificate> there comes a point where getting better at C++ is not laterally useful in any meaningful sense
<discocaml> <contificate> and it's kind of akin to memorising plotlines to random TV shows, or maintaining a fan wiki for a TV series
<discocaml> <contificate> it's just random kitchen sink nonsense
<discocaml> <jalsol> that is uhh true ig
<discocaml> <contificate> I used to read the standard in my teens, so I could win internet arguments
<discocaml> <jalsol> even the key to interviewing for C++ roles in HFT firms is to read and memorize
<discocaml> <jalsol> that's for the C++ part
<discocaml> <contificate> I've applied for a few C++ jobs and the hiring managers don't believe I can write C++ because I choose not to
<discocaml> <jalsol> I haven't written any C++ code in the past year (aside from competitive programming) and still landed a C++ internship
<discocaml> <contificate> I need to write random C++ projects to get it more prominent on my CV, probably
<discocaml> <jalsol> I haven't written any C++ code in the past year (aside from competitive programming and coursework) and still landed a C++ internship
<discocaml> <contificate> but it's so depressing and slow going to use it for things I like
<discocaml> <jalsol> I've been using OCaml instead
<discocaml> <jalsol> and the experience has been pleasant
<discocaml> <jalsol> I even managed to shill OCaml to friends who had no clue about FP
<discocaml> <contificate> I like to say "shill" as well, but, I gather, that - by definition - it would imply you're not a genuine OCaml enjoyer
inline has joined #ocaml
<discocaml> <jalsol> lmao I just use the words with comedic effects
<discocaml> <contificate> based
<discocaml> <jalsol> but I do enjoy it and believe in it, otherwise I wouldn't have used it for a year
<discocaml> <jalsol> I convinced my professor to let us present OCaml in our programming language seminar
<discocaml> <jalsol> he had SML and F# on the list but not OCaml
wbooze has joined #ocaml
<discocaml> <microwave3607> I'm really liking ocaml
<discocaml> <microwave3607> if `melange` go forward
<discocaml> <microwave3607> then I will just be in love
<discocaml> <microwave3607> but if something cool happens in haskell land I will like it too
Frostillicus has joined #ocaml
<discocaml> <hungrystackofpancakes> I can't install Linux lol
<discocaml> <contificate> why not
xenu has quit [Ping timeout: 268 seconds]
xenu has joined #ocaml
Frostillicus has quit [Ping timeout: 252 seconds]
<discocaml> <hungrystackofpancakes> my cpu is arm
xenu has quit [Ping timeout: 260 seconds]
<discocaml> <hungrystackofpancakes> snapdragon(R) X
<discocaml> <hungrystackofpancakes> not supported driver in linux
xenu has joined #ocaml
<discocaml> <barconstruction> Crazy how so many people use Windows in spite of its poor support for OCaml
<discocaml> <hungrystackofpancakes> why
<discocaml> <empathy.monster> What about WSL?
<discocaml> <hungrystackofpancakes> sure
<discocaml> <hungrystackofpancakes> that work fine
Haudegen has quit [Quit: Bin weg.]
<discocaml> <empathy.monster> @hungrystackofpancakes I don't want to post the link here, but if you search "Ubuntu Snapdragon" you can find the concept images for Ubuntu 25.04 for snapdragons
<discocaml> <hungrystackofpancakes> depends what type of snapdragons
<discocaml> <empathy.monster> Elite I think
<discocaml> <hungrystackofpancakes> i don't have elite
<discocaml> <empathy.monster> Wsl it is then, ig
<discocaml> <aeseia> SML and F# is crazy
<discocaml> <aeseia> Being an F# fan and not having any HFT signal booster (or one small one no one knows about) I feel like F# is always the underdog
Haudegen has joined #ocaml
<discocaml> <aeseia> SML and F# is crazy
<discocaml> <aeseia> Being an F# fan and not having any HFT signal booster (or having one small one no one knows about) I feel like F# is always the underdog
<discocaml> <contificate> question is: what languages, at a minimum, would you expect on a "programming language" seminar/course
<discocaml> <contificate> I'd say C, OCaml, Prolog, and Agda (or Rocq/Gallina), maybe Java too
johnridesabike has quit [Quit: johnridesabike]
johnridesabike has joined #ocaml
<discocaml> <Kali> i'd through pascal in there somewhere because of how influential it was to so many languages in both syntax and ideas
<discocaml> <Kali> throw*
<discocaml> <edhebi> really depends on the intent of the course
<discocaml> <edhebi> like if we're about programming langs in general, covering history and the "big ones", seeing various paradigms
<discocaml> <edhebi> @contificate ime both writing and teaching C++ for a while, C++ is often use because there's no alternative for x or y reason. a big part of it is having a sufficiently structured codebase, idioms, set of habits that you don't do the bad stuff
<discocaml> <edhebi> and yes, having the bad stuff readily available somehow still taught as a goddam entry point is like 80% of what's wrong with C++
<discocaml> <edhebi> @contificate ime both writing and teaching C++ for a while, C++ is often used because there's no alternative for x or y reason. a big part of working with it is having a sufficiently structured codebase, idioms, set of habits that you don't do the bad stuff
<discocaml> <edhebi> but yeah, turn on every lint and warning, learn the idioms along with the construct, and really it's not so different from writing C# or whatev, the weird stuff is almost only a concern when you're working with outdated practices or doing some really weird stuff (and if that's unavoidable, please contain it)
Serpent7776 has quit [Ping timeout: 252 seconds]
<discocaml> <hungrystackofpancakes> do ocaml support multiple inheritance
<companion_cube> yes actually
<companion_cube> pretty rare to need it, though
<discocaml> <Kali> https://ocaml.org/manual/5.1/objectexamples.html#s%3Amultiple-inheritance
<discocaml> <hungrystackofpancakes> awesome
<discocaml> <hungrystackofpancakes> is it good for programming language development?
<discocaml> <hungrystackofpancakes> do you have book or tutorial to learn ocaml for the impatience?
<discocaml> <Kali> ocaml was used for the original compilers for both rust and wasm so hopefully that's good enough for you
<discocaml> <hungrystackofpancakes> epic
<discocaml> <Kali> there are tons of resources here you can check out https://ocaml.org/docs
<discocaml> <Kali> the manual itself https://ocaml.org/manual/5.3/index.html is also very helpful
<discocaml> <hungrystackofpancakes> what about "OCaml from the Very Beginning – John Whitington"
<discocaml> <Kali> never read it
<discocaml> <Kali> it could be good
<discocaml> <Kali> i just have never read it
<discocaml> <hungrystackofpancakes> usually when i see programming language
<discocaml> <hungrystackofpancakes> it either end with . or ;
<discocaml> <hungrystackofpancakes> but in ocaml its `;;`
<discocaml> <hungrystackofpancakes> questionable design
<discocaml> <yawaramin> _OCaml from the Very Beginning_ is written for people with zero programming experience
<discocaml> <yawaramin> you don't need `;;` in source code. only in REPL
<discocaml> <hungrystackofpancakes> well i know C++ for 4 years
<discocaml> <hungrystackofpancakes> so technically i'm interdemiate
<discocaml> <hungrystackofpancakes> so technically i'm intermediate
<discocaml> <yawaramin> try the first chapter of the OCaml Manual
<discocaml> <hungrystackofpancakes> i want a clear structure book
<discocaml> <Kali> the manual is very structured and can be read through like a book
<discocaml> <hungrystackofpancakes> not even few words and i couldn't understand anything
<discocaml> <yawaramin> 'clear structure book' is subjective, everyone understands things differently. if you give us an example of what you consider a 'clear structure book', we can try to give you an OCaml equivalent
rak has quit [Quit: Segmentation fault (core recycled)]
rak has joined #ocaml
<discocaml> <contificate> OCaml? my favourite for that
Frostillicus has joined #ocaml
Frostillicus has quit [Read error: Connection reset by peer]
dhil has quit [Quit: Leaving]
Serpent7776 has joined #ocaml
<discocaml> <hungrystackofpancakes> does anyone know how to install ocaml in ARM cpu
Exa has quit [Ping timeout: 272 seconds]
euphores has quit [Quit: Leaving.]
Exa has joined #ocaml
euphores has joined #ocaml
<discocaml> <contificate> I've done it on my rpi I'm sure, but was literally just opam from arch packages
<discocaml> <hungrystackofpancakes> it just tries to install x86
<discocaml> <hungrystackofpancakes> it just tries to install x86_64
<discocaml> <contificate> what are you installing
<discocaml> <contificate> I used https://archlinuxarm.org/packages/aarch64/opam - also MacOS users manage to get OCaml working as well these days, so it must be viable
<discocaml> <hungrystackofpancakes> in windows arm
<discocaml> <contificate> not sure how viable that is
<discocaml> <hungrystackofpancakes> i'm trying to install ocaml in windows arm
<discocaml> <hungrystackofpancakes> uses arm cpu instead of x86_64
Everything has joined #ocaml
<discocaml> <contificate> I gathered as much
<discocaml> <contificate> I'm not familiar with the progress of OCaml on Windows, let alone OCaml on ARM Windows - so I can't comment
dylanj has quit [Remote host closed the connection]
dylanj has joined #ocaml
dylanj has quit [Remote host closed the connection]
Haudegen has quit [Quit: No Ping reply in 180 seconds.]
Haudegen has joined #ocaml
<discocaml> <yawaramin> Windows ARM is not supported https://github.com/ocaml/ocaml?tab=readme-ov-file#overview
Everything has quit [Quit: Lost terminal]
dylanj has joined #ocaml
dylanj has quit [Remote host closed the connection]
dylanj has joined #ocaml
dylanj has quit [Remote host closed the connection]
dylanj has joined #ocaml
dylanj has quit [Remote host closed the connection]
dylanj has joined #ocaml
<discocaml> <hungrystackofpancakes> well ig i won't bee using it
dylanj has quit [Remote host closed the connection]
dylanj has joined #ocaml
bartholin has quit [Remote host closed the connection]
Serpent7776 has quit [Ping timeout: 276 seconds]
johnridesabike has quit [Quit: johnridesabike]
<discocaml> <polyml> windows arm is pretty annoying to target, if you want first class support you might have to settle with F#
Tuplanolla has quit [Quit: Leaving.]
Haudegen has quit [Quit: Bin weg.]