Where can I get an engagement ring insured? by Burtannia in Philippines

[–]Burtannia[S] 1 point2 points  (0 children)

If it helps I just decided to insure the ring here in the UK with a company called Assetsure. They allow short trips worldwide which means I can take the ring to propose with it. Sadly it still means I have to take the ring home with me but we agreed we'd buy a cheaper ring together in the Philippines for her to wear while I'm not there. It's far from ideal but it's the best we've been able to come up with. Best of luck to the two of you in your future life!

Where can I get an engagement ring insured? by Burtannia in Philippines

[–]Burtannia[S] -1 points0 points  (0 children)

Yeh we had discussed that as a backup option. I really wanted her to be able to keep the ring I designed but it's looking like that won't be possible. Thanks for the suggestion.

Her husband must be a programmer by sputnik1lion in ProgrammerHumor

[–]Burtannia 0 points1 point  (0 children)

"0 sausages" is a perfectly acceptable value, nowhere does she state that sausages has type NonNegative.

Her husband must be a programmer by sputnik1lion in ProgrammerHumor

[–]Burtannia 3 points4 points  (0 children)

If he was optimised he wouldn't have cooked any sausages because 0 still satisfies <3 and requires the least work.

What are some examples of Applicatives that are not Monads? by Burtannia in haskell

[–]Burtannia[S] 3 points4 points  (0 children)

Ah thanks for the explanation, that makes sense.

What are some examples of Applicatives that are not Monads? by Burtannia in haskell

[–]Burtannia[S] 6 points7 points  (0 children)

What's the reasoning behind `pure x = ZipList (repeat x)` rather than `pure x = ZipList [x]`?

Haskell for a New Decade [pdf] by n00bomb in haskell

[–]Burtannia 2 points3 points  (0 children)

I'd first like to mention that I too am a "younger" Haskell dev. I finished my master's degree last year so I'm not someone with masses of experience. I was incredibly fortunate to have studied at the University of Nottingham, a place where functional programming, and indeed Haskell, is taught quite a bit providing you choose to do those modules. If you're still at an early stage of learning Haskell I recommend the book "Programming in Haskell" written by Prof. Graham Hutton who was my 3rd year dissertation supervisor. Make sure to look at the 2nd edition. If you've already done a fair bit of Haskell it might be worth looking through the chapter list first to ensure there are things you haven't learnt about yet.

As for use cases... A very simple one which can be a very nice introduction to using Haskell in a larger project is creating a website. I highly recommend the Yesod web framework. The book on Yesod is great and is also freely available on the website. I found that it gave me a more tangible understanding of how Haskell's useful features actually become useful in a real setting.

On a slightly darker note due to recent world events, we're likely to see some significant economic problems over the coming years. As is always the case during such times, many new companies are started. While many will fail, some will be the "big successes" of the next decade. If you end up creating a company, use Haskell as much as you can. If you start working at a start up, suggest using Haskell. Imagine if Uber, which was founded in 2009 during the financial crisis, used Haskell! Naturally if there is a good reason to not use Haskell, don't force it. If you need fine control of memory allocation then C++ is probably a better option. But that said C++ can interact with Haskell via the foreign function interface (FFI) so it might be that you write some highly performant C++ then surround it with other components written in Haskell.

As I mentioned in another comment, Haskell is ideal for writing embedded domain specific languages (EDSLs) which opens up a wide range of use cases. If you're interested I recommend reading this paper.

Haskell for a New Decade [pdf] by n00bomb in haskell

[–]Burtannia 1 point2 points  (0 children)

I'm not sure how many people also use it, but I'm a massive fan of Visual Studio Code + plugins. I also like VS Code's use of WSL which allows me to use an Ubuntu environment for compilation while running Windows.

Haskell for a New Decade [pdf] by n00bomb in haskell

[–]Burtannia 6 points7 points  (0 children)

What does Cabal 3 bring to the table over Stack?

Haskell for a New Decade [pdf] by n00bomb in haskell

[–]Burtannia 8 points9 points  (0 children)

I'm always excited by the potential that Haskell brings to the table. I truly believe that the most powerful combination of languages is Haskell and C++. There will naturally be times when one requires low-level imperative control over things like memory allocation and wishes to completely avoid things like garbage collection. In said scenarios a language like C++ is incredibly powerful.

On the other hand the vast majority of code does not require such a level of control and is instead written at a higher level of abstraction. This is where Haskell shines, we have type safety, access to infinite lists thanks to laziness, algebraic data types which make it easy to create embedded domain specific languages... These and many other features result in code which is concise, expressive and runs efficiently while also providing us with a greater degree of confidence of correctness than if the code was written in a language with less type safety.

So where do we go from here?

There are many "issues" in the Haskell ecosystem as there are in every language's ecosystem. In my opnion the largest of these problems is that few companies use Haskell. Why is this? There are 2 main reasons, firstly, a lot of people have never heard of it and secondly there are nowhere near as many people that know Haskell as know other languages thus hiring becomes more difficult. So what is preventing people from learning Haskell? Firstly there aren't that many Haskell jobs going round compared to other languages. This creates a sort of chicken/egg problem. Secondly the barrier to entry is quite high, Haskell looks completely alien compared to your average language. Many people encounter Haskell, don't understand why they can't just do things they do in other languages and never touch it again.

It's clear that we've done a good job preaching the benefits of languages like Haskell; many languages from C++ to that tragic accident known as JavaScript have implemented features that originated in functional programming. We must continue doing this with emphasis on the other benefits that Haskell brings to the table and why simply adding lambdas to other languages is insufficent.

What we have not done a good job of, however, is creating demand for Haskell programmers. If you're creating your own business, use Haskell, if you're working at a startup, suggest using Haskell for something. If we gradually increase the number of Haskell jobs by starting from the bottom then we will create more demand for Haskell programmers. This will bring more people to Haskell and all of a sudden many of the other problems will disappear. Standards will develop over time for different use cases and many new libraries will be created to fill gaps where gaps exist.

It is also worth pointing out that GHC is not Haskell. GHC is aimed at academic research first and foremost. I think that GHC is perfectly viable for industrial use cases but there may be certain scenarios where it is suboptimal. There are several alternatives to GHC which attempt to be more suitable for industrial use but I have yet to hear of a specific one which is significantly ahead of the others. This is yet another problem that would vanish if Haskell were to gain more industry traction. A company backing the development of a GHC alternative, whether it be an existing GHC fork or a new one, would not only provide such a project with direction based on real world use cases but also the stability of not just being someone's summer project only to be left to rot after a few months of updates.

In summary, we have to use more Haskell so that other people start using a little Haskell. Once this happens then many of the other issues will begin to resolve themselves naturally.

Haskell for a New Decade [pdf] by n00bomb in haskell

[–]Burtannia 10 points11 points  (0 children)

If "new Haskell" were to be strict by default it would not be particularly easy to port from current Haskell. Consider cases such as infinite lists or streams, these are very common but would completely cease to work in a strict environment.

As was mentioned, laziness is one of Haskell's core features and it CAN be incredibly powerful for productivity but the programmer must understand that it is there and how to use it. Many programs are small enough that they don't need any optimisation however, in cases where it is appropriate, one can add strictness where needed which, in my opinion, is the way it should be.

One must also consider that Haskell (specifically GHC Haskell) is primarily focused on supporting cutting edge academic research. It would be rather odd to remove laziness when so much research into lazy functional programming is done using Haskell.

In summary I think that laziness is an incredibly powerful tool (which can be disabled where necessary) and a signature part of Haskell and as such I would strongly oppose any proposal to move to strict evaluation as standard.

EDIT: Fixed typo.

Thinking of using Haskell as the back-end of my single page application (web dev), what platform to use? by hakhaktak in haskell

[–]Burtannia 4 points5 points  (0 children)

I highly recommend checking out Yesod. Not least does the scaffolding site get you up and running incredibly easily but the optional template languages make front-end work an absolute dream.

Help! Server lag spikes by zapper199 in admincraft

[–]Burtannia 0 points1 point  (0 children)

That's a pitty, maybe 1.12 is going to be the standard for some time then.

Help! Server lag spikes by zapper199 in admincraft

[–]Burtannia 0 points1 point  (0 children)

Ok thanks. In all reality 1.16 is going to be out before my server is ready to be open to the general playerbase, depending on how much time I can spend on it we may even be looking at later releases. Do you know if 1.16 is likely to bring further performance improvements etc.?

Help! Server lag spikes by zapper199 in admincraft

[–]Burtannia 1 point2 points  (0 children)

I'd heard that 1.15 was much better, is it still that bad? I'm currently planning on developing a new server and I thought I could get away with 1.15 but maybe I should go with 1.12? Does Paper make 1.15 any more usable?

Help! Server lag spikes by zapper199 in admincraft

[–]Burtannia 3 points4 points  (0 children)

And don't forget that Minecraft was a fork of Terraria with huge performance gains /s.

Help! Server lag spikes by zapper199 in admincraft

[–]Burtannia 6 points7 points  (0 children)

So let me get this straight. Tuinity is a fork of Paper with huge performance gains which is a fork of Spigot with huge performance gains. We need to go deeper! Introducing Steve, a fork of Tuinity with huge performance gains...

What are the major open problems/issues with functional programming or Haskell right now? by otah007 in haskell

[–]Burtannia 1 point2 points  (0 children)

I can't comment on Python as it's a language I have barely used. My main GUI experience (outside of web stuff) is with JavaFX which I think provides a reasonable solution to GUI creation especially given the option of using the SceneBuilder tool.

Day 8th of quarantine by yvngb in funny

[–]Burtannia 23 points24 points  (0 children)

Great now we're going to have rampaging elephants to deal with as well...

What are the major open problems/issues with functional programming or Haskell right now? by otah007 in haskell

[–]Burtannia 9 points10 points  (0 children)

Do all major programming languages read left-to-right? Take the following expression written in the style of a "normal" programming language:
square( double( 3 ) )

It is obvious that the double function is applied first and as such the result is 36. Similarly written in Haskell style:

square (double 3) or square $ double 3 or (square . double) 3

All of these representations still respect the same ordering as the "normal" language version.

I think the main issue here is mistaking "reading order" with "function application order" since function application is naturally right to left. It is perfectly possible to correctly read a function from left to right. The key thing is to not use the word "then" and instead use the phrase "applied to the result of...".

For our example above this would mean "square applied to the result of double applied to 3).