Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Dec 01 19:43
    justjoheinz opened #1234
  • Dec 01 18:12
    julien-truffaut commented #1229
  • Dec 01 17:48
    scala-steward synchronize #1233
  • Dec 01 16:25

    julien-truffaut on gh-pages

    Deploy website Deploy website … (compare)

  • Dec 01 16:20

    cquiroz on master

    Update refined, refined-scalach… Merge pull request #1232 from s… (compare)

  • Dec 01 16:20
    cquiroz closed #1232
  • Nov 30 03:23
    scala-steward opened #1233
  • Nov 30 03:23
    scala-steward opened #1232
  • Nov 28 16:07

    julien-truffaut on gh-pages

    Deploy website Deploy website … (compare)

  • Nov 28 16:00

    cquiroz on master

    Update alleycats-core, cats-cor… Merge pull request #1231 from s… (compare)

  • Nov 28 16:00
    cquiroz closed #1231
  • Nov 28 03:47
    scala-steward opened #1231
  • Nov 23 11:20

    julien-truffaut on gh-pages

    Deploy website Deploy website … (compare)

  • Nov 23 11:15

    cquiroz on master

    Update scalafmt-core to 3.1.2 Merge pull request #1230 from s… (compare)

  • Nov 23 11:15
    cquiroz closed #1230
  • Nov 22 12:49
    scala-steward opened #1230
  • Nov 20 09:18
    justjoheinz opened #1229
  • Nov 20 02:26

    julien-truffaut on gh-pages

    Deploy website Deploy website … (compare)

  • Nov 20 02:21

    xuwei-k on master

    Update scala-compiler, scala-li… (compare)

  • Nov 20 02:21
    xuwei-k closed #1225
Julien Truffaut
@julien-truffaut
you can use this workaround for now import cats.syntax.all.{index => _}
Bob Glamm
@glamm
Ahh, that also works for me I'm pretty sure. Thanks again!
bblfish
@bblfish:matrix.org
[m]
Hi, this I have put some ideas together on web-cats/CG#28. They are more on the theoretical side I think for the moment, but could be quite interesting.
I am working on a little demo using Monocle to see if that can give some insight into what a web server is.
bblfish
@bblfish:matrix.org
[m]
As I am modelling a Web Server as a nested HashMap, where the path of keys form the path of the URL. It is easy to write a getter using fold on the path, but I don't think it is so easy to build a setter. I would need a lens for a recursive datastructure. But looking around it seems that is not available.
bblfish
@bblfish:matrix.org
[m]
I guess that is equivalent to a tree with the path leading to a node where data lies.
bblfish
@bblfish:matrix.org
[m]
From what I gather searching the web, what is needed is what in Haskell is called Plated https://qfpl.io/posts/optimising-free-with-plated/
Julien Truffaut
@julien-truffaut
There is a Plated typeclass in Monocle too
bblfish
@bblfish:matrix.org
[m]
Ah! I saw some stackexchange questions which said that that was not there. Found it.
bblfish
@bblfish:matrix.org
[m]
I am not sure Plated is what I was looking for. I was looking for a way to locate a node in a Tree by a path, so that I could see what was there or change it.
Gabriel Volpe
@gvolpe:matrix.org
[m]
Maybe that's just Traversal ? bblfish
bblfish
@bblfish:matrix.org
[m]

going by the doc on traversal

A Traversal is the generalisation of an Optional to several targets. In other word, a Traversal allows to focus from a type S into 0 to n values of type A.

I guess that the usual path to an element is defined statically in the Monocle Lenses, whereas what is needed here is a path that is specified at run time.
Ken Scambler
@kenbot
Indexes let you do that. Looking at the Resource/Container structure that you/Henry Story submitted, you should be able to define given Index instances for your types, then do something like root.focus(_.index("www").index("foo").index("com").index("index.html").content).get
bblfish
@bblfish:matrix.org
[m]
sh ok, so I should be able to fold on a list to create such an index.
I'll try that.
Ken Scambler
@kenbot
You need to suck in a typeclass instance for each index call, so folding on a list of strings might not work in a straightforward way
bblfish
@bblfish:matrix.org
[m]

I think all I need is a way to be able to pick leaves of a

type Tree[+A] = Free[Map[String,_], A]

by the path to it's leaves... (need to think if that is the right datastructure first)

bblfish
@bblfish:matrix.org
[m]

:point_up: Edit: I think all I need is a way to be able to pick leaves of a

type Indexed[R] = Map[String,R]
type DirTree[A] =  Free[Indexed, A]

by the path to it's leaves... (need to think if that is the right datastructure first)

bblfish
@bblfish:matrix.org
[m]
No, I don't think that works...
Julien Truffaut
@julien-truffaut
Monocle 3.1.0 is released with a new refocus operation and better compatibility with cats.
bblfish
@bblfish:matrix.org
[m]
not on maven central yet though https://repo1.maven.org/maven2/dev/optics/
Ken Scambler
@kenbot
Hey @bblfish:matrix.org, could you maybe write some "fantasy code" showing what you're trying to do, if you could magic the right functionality into existence?
bblfish
@bblfish:matrix.org
[m]
I think I have something that works. I'll put it on github, and send a link here.
I was really here trying to use Monocle as a tool to quickly get an idea of how a web server could be seen as a Lens, more for theoretical purposes. (to understand what GET, PUT, POST, etc... are).
bblfish
@bblfish:matrix.org
[m]
@kenbot: I wrote together a little "web server" using lenses :-)
https://github.com/bblfish/lens-play/blob/master/src/main/scala/server/Server.scala
definitely very fantasy :-)
I have a feeling that the recent work on the category of polynomials allows one to think of actor systems as generalised lenses.... But I have no confirmation of that yet, and it's a lot of work to work out.
bblfish
@bblfish:matrix.org
[m]
But you will see there that I had to use Index to take a list to find the right element to replace in the web server.
bblfish
@bblfish:matrix.org
[m]
For a bit of context see web-cats/CG#28
Julien Truffaut
@julien-truffaut
There is a Monocle chanel in the typelevel discord server. We'll most likely phase out gitter over the next few weeks: https://discord.com/invite/XF3CXcMzqD
Ken Scambler
@kenbot
I've given you some detailed feedback over on Typelevel discord, @bblfish:matrix.org