# Blog post: Understanding the Design of elm/url

**URL:** <https://discourse.elm-lang.org/t/blog-post-understanding-the-design-of-elm-url/8645>\
**Category:** Show and Tell\
**Created:** [September 6, 2022, 3:00pm UTC](https://discourse.elm-lang.org/t/blog-post-understanding-the-design-of-elm-url/8645 "2022-09-06T15:00:29Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![john-kelly](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/john-kelly/32/69_2.png) [@john-kelly](https://discourse.elm-lang.org/u/john-kelly)\
**Post date:** [September 6, 2022, 3:00pm UTC](https://discourse.elm-lang.org/t/blog-post-understanding-the-design-of-elm-url/8645/1 "2022-09-06T15:00:29Z")

</div>

Hey everyone. I’ve written a post to explain how parsers work in elm/url.

### Here’s a link to the blog post: [Understanding the Design of elm/url: Part 1](https://foldp.com/blog/elm-url.html)

* * *

As stated in the README of elm/url, “The API in `Url.Parser` is quite distinctive.” And, from my experience, although I’ve found the API easy to use, it’s been really difficult to understand. So I wrote about it!

If a type like this has ever caused you confusion.

```elm
Parser (String -> b) b

```

This post is for you! I hope you enjoy.

Thank you @dillonkearns and @randomer for reviewing early drafts of the post.

---

<div class="post-metadata">

**Author:** ![konnik](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/konnik/32/2599_2.png) [@konnik](https://discourse.elm-lang.org/u/konnik)\
**Post date:** [September 7, 2022, 1:33pm UTC](https://discourse.elm-lang.org/t/blog-post-understanding-the-design-of-elm-url/8645/2 "2022-09-07T13:33:50Z")

</div>

This is a great blog post. Looking forward to the follow up posts. Thanks 🙏

---

<div class="post-metadata">

**Author:** ![setop](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/setop/32/4331_2.png) [@setop](https://discourse.elm-lang.org/u/setop)\
**Post date:** [September 14, 2022, 8:46am UTC](https://discourse.elm-lang.org/t/blog-post-understanding-the-design-of-elm-url/8645/3 "2022-09-14T08:46:56Z")

</div>

Thanks for this insightful post 👌

Plus I enjoyed the trick of using embedded Gist with markdown content to make a minimal static site/blog 🙂 Just think to backup your GH content regularly. You never know when they will close your account 😉

---

<div class="post-metadata">

**Author:** ![polarit](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/polarit/32/4651_2.png) [@polarit](https://discourse.elm-lang.org/u/polarit)\
**Post date:** [September 15, 2022, 10:44am UTC](https://discourse.elm-lang.org/t/blog-post-understanding-the-design-of-elm-url/8645/4 "2022-09-15T10:44:12Z")

</div>

Hi @john-kelly  
As I was going to visit your blog post, REDACTED has given a warning about a **malicious site** , suggesting **not to visit** it.  
In fact, the url was something else than the one here in discourse, beginning with “chrome-extension:”

I wonder now, whether your blog is infected or my browser?

* * *

**edit:** this post originally included a weird link in REDACTED, and not the link shared by the original post. Removed it in case it’s something weird that other people should not click.

---

<div class="post-metadata">

**Author:** ![john-kelly](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/john-kelly/32/69_2.png) [@john-kelly](https://discourse.elm-lang.org/u/john-kelly)\
**Post date:** [September 15, 2022, 3:51pm UTC](https://discourse.elm-lang.org/t/blog-post-understanding-the-design-of-elm-url/8645/5 "2022-09-15T15:51:18Z")

</div>

weird. i use github pages to host the site, not sure what caused your issue. i’ll check on the cert for the site, that’s the only thing i could think of to cause that kind of warning

---

<div class="post-metadata">

**Author:** ![konnik](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/konnik/32/2599_2.png) [@konnik](https://discourse.elm-lang.org/u/konnik)\
**Post date:** [September 15, 2022, 4:33pm UTC](https://discourse.elm-lang.org/t/blog-post-understanding-the-design-of-elm-url/8645/6 "2022-09-15T16:33:35Z")

</div>

Once again, thanks for writing this blog post. It inspired me to implement the elm/url parser api in Haskell a couple of days ago, just to see if I understood everything correctly. It was a great learning experience. 🙂

---

<div class="post-metadata">

**Author:** ![john-kelly](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/john-kelly/32/69_2.png) [@john-kelly](https://discourse.elm-lang.org/u/john-kelly)\
**Post date:** [September 15, 2022, 5:02pm UTC](https://discourse.elm-lang.org/t/blog-post-understanding-the-design-of-elm-url/8645/7 "2022-09-15T17:02:24Z")

</div>

thank you so much for your kind words! it’s great to hear you tried it out for yourself.

for anyone who wants an abbreviated example to play with, try this out:

```auto
apply value fn = fn value

apply 3 >> apply "ha" : Int -> String -> b
(apply 3 >> apply "ha") String.repeat : String --> "hahaha"

```

if you can understand that, you can understand elm/url! although only mentioned briefly in the post, this realization was really fun for me.

---

<div class="post-metadata">

**Author:** ![polarit](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/polarit/32/4651_2.png) [@polarit](https://discourse.elm-lang.org/u/polarit)\
**Post date:** [September 16, 2022, 7:28am UTC](https://discourse.elm-lang.org/t/blog-post-understanding-the-design-of-elm-url/8645/8 "2022-09-16T07:28:34Z")

</div>

Hi @john-kelly

Here is the same warning from today as I tried again to open the site  
[https://foldp.com/blog/elm-url.html](https://foldp.com/blog/elm-url.html)  
Sorry, it’s only in Finnish language but you can see the weird address in the screenshot picture.

 ![warning-fsecure](https://canada1.discourse-cdn.com/flex035/uploads/elm_lang/original/2X/3/3817377e8874f510ea262e69b364e5697404c850.jpeg)

---

<div class="post-metadata">

**Author:** ![setop](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/setop/32/4331_2.png) [@setop](https://discourse.elm-lang.org/u/setop)\
**Post date:** [September 16, 2022, 11:32am UTC](https://discourse.elm-lang.org/t/blog-post-understanding-the-design-of-elm-url/8645/9 "2022-09-16T11:32:27Z")

</div>

Maybe a false positive on F-Secure side. Honestly I’ve never trust such invasive tools. They only protect their shareholders, not their users, IMHO. They’ll never make their way to my own machine.

---

<div class="post-metadata">

**Author:** ![dta](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/dta/32/1917_2.png) [@dta](https://discourse.elm-lang.org/u/dta)\
**Post date:** [September 16, 2022, 11:33am UTC](https://discourse.elm-lang.org/t/blog-post-understanding-the-design-of-elm-url/8645/10 "2022-09-16T11:33:12Z")

</div>

The weird URL is how chrome displays pages that are bundled with extensions. You can see that it is coming from [this](https://chrome.google.com/webstore/detail/browsing-protection-by-f/idpkgibhbjmogkfbkmjnnkhpgdagoeme) extension since its ID matches. I have no insight into why that extension has decided that the blog post is harmful.

---

<div class="post-metadata">

**Author:** ![system](https://canada1.discourse-cdn.com/flex035/uploads/elm_lang/original/1X/50a05e53677a2c3b47776d7abd0f113eb50193a1.png) [@system](https://discourse.elm-lang.org/u/system)\
**Post date:** [September 26, 2022, 11:33am UTC](https://discourse.elm-lang.org/t/blog-post-understanding-the-design-of-elm-url/8645/11 "2022-09-26T11:33:26Z")

</div>

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.
