lainchan / λ

What software project can be undertaken by a single person in under 2 years?

Lukasiewicz · 2017-10-01 11:38
I've been thinking about implementing something with a bit of meat on it, in Haskell maybe. I am good with Machine Learning systems also. Can you help me?
Knuth · 2017-10-02 01:48
Try creating a chess or go AI engine in Haskell. Or implement computer vision to recognize similar objects given a certain input.
Nguoi La · 2017-10-11 17:28
Why do people force the Haskell meme I mean if you would really want to build something with machine learning why not use sci-kit learn or tensorflow with Python.
Zuse · 2017-10-13 01:29
>>4297 there's tensorflow bindings for haskell. Not that using it is a good idea, since you're just making things harder for no real gain besides DUDE HASKELL LMAO
Milner · 2017-10-15 01:47
>>4343 If you think working with Haskell is making things harder then you don't know Haskell.
Liet Kynes · 2017-10-15 02:11
>>4368 No one thinks you're cool for using a needlessly complicated memelang, pal
Spike Spiegel · 2017-10-15 02:29
>>4369 In case you're not trolling : Haskell is not needlessly complicated. It really isn't. It's however, as complicated as it needs to be. It's far from being a memelang, it has few users but they're not using it because it's cool or whatever but because they're passionate about it. It's not hard to use ; it's easy to translate an idea into code once you know a bit of haskell.
Donna Hawthorne · 2017-10-15 08:28
>>4371 The base language of Haskell is very simple. The concepts introduced by the implementation are what's hard, but in the end it's just about recognizing patterns at a higher level. The only people who complain about Haskell being hard are those who tried it once and couldn't get past the monads, so all I can say to you is to git gud.
Wirth · 2017-10-16 01:17
>>4372 Personally I wish that Haskell was a bit more agnostic regarding monads. They are a very nice pattern to use, but the first example that most people encounter is a weird IO monad which runs on compiler magic, and makes people think that monads are about IO or emulating imperative code. I would have preferred an IO model similar to the one that clean (the language) used where you had linear types and uniqueness types (think Rust borrow checker and mut refs) built into the language. All IO primitives work by mutating a single unique "world" object that is passed around. First of all, that model is a lot easier for beginners to grasp, but is still fully compatible with lazy evaluation. Secondly, it lets you implement the IO monad yourself without compiler magic, it's just the state monad where the state being passed around is the outside world. GHC Haskell is getting linear types this year though, so I have high hopes for the future. Linear types also allow programmers to write programs that don't create garbage, which would be amazing since Haskell's GC isn't stellar. My wishlist for a language would be one with HKT's, linear & uniqueness types, and some subset of dependent types that let you use the language itself for compile time evaluation of type parameters (but not with proofchecker levels of autism). It'd have Haskell/ML syntax, with a concurrent GC and no annoying distinction between stack & heap to complicate things. This would allow you to have the type system help you to do static compile-time refcounting using the lifetime information in the type system. Most code would not create garbage and almost everything would be deterministically GC'ed, except for persistent data structures that actually require runtime refcounts or full GC, which would cause the GC to kick in. For list based algorithms (which are common since Haskell lists are essentially the equivalent of iterators/generators in other languages), you'd have both persistent lists, and uniqueness lists which require you to have unique access to a cons in order to pull it apart. This would destroy it and eliminate the need for garbage collecting the list. Both should implement foldable/traversable so that you can replace one with the other when optimizing performance in common cases. Also, you should be able have some control over how memory is allocated to avoid excessive indirection, with both regular constructors (which contain other objects by pointing to them), and structs that have a flat memory layout. Haskell-like languages could have really amazing real-world performance and optimizability if they were just designed from the start to let experienced programmers write performant code for them.
Fred Nurk · 2017-10-30 11:59
>>4372 >monads A monad is a monoid in the category of endofunctors, what's the problem?
Dox · 2017-10-30 14:50
What are you interested in and how much free time can you dedicate to it? 2 years of working full-time on it is much different than 2 years of working on it for a few hours each weekend. You could create your own scripting language for machine learning tasks, and built it off of your own implementation of several machine learning algorithms.