GithubHelp home page GithubHelp logo

Comments (10)

jxv avatar jxv commented on July 20, 2024

WIth oneOf, noneOf, char, and count functions above. They take some non-parsec-transformer value as an arg to curry a new function with that value in its environment. Now, should there be way to generalize the capture with a struct and a function?

Take this gist for example:

// F: Fn(E,A,P) -> B
 struct Capture<E,A,B,P,F> {
    env: E,
    parser: P,
    func: F
}

from combine.

Marwes avatar Marwes commented on July 20, 2024

I sketched out something like the Capture struct when helping giving help in the reddit post. Still, I think the bigger issue is with the oneOf and nonOf functions of what type of argument they should take. With slices they are efficient but bound to a lifetime and a Vec forces allocation. The Cow type could allow for both but forces an additional overhead. I am not sure what is the best approach here.

from combine.

jxv avatar jxv commented on July 20, 2024

In regards to the Cow type's overhead. (I don't know how much it has). Why not implement both approach but as separate structs/functions? Eg. OneOfVec/one_of_vec and OneOfSlice/one_of_slice.

from combine.

Marwes avatar Marwes commented on July 20, 2024

I think Cow should just be an extra 8 bytes for the tag (so 24 bytes for Vec + 8 = 32 bytes) vs 16 bytes for only a slice. I don't believe that there should be any branch overhead for the usage though, since the slice and Vec type both have their pointer and length at the same location in memory.

There is also the option of going even more generically by using some trait which can be implemented for any sort of collection though since the collection traits where removed from the standard library it is probably necessary to define it in the library which seems like overkill.

from combine.

tailhook avatar tailhook commented on July 20, 2024

It seems I need sepEndBy, because I'm tired of trailing comma issue. Is it hard to implement?

from combine.

Marwes avatar Marwes commented on July 20, 2024

It shouldn't be particularly hard to implement if feel free to give it a go if you want. If you look at the sepBy parser it should get you most of the way though it is a bit more complex than it needs to be. I can take a look later this week otherwise.

from combine.

Marwes avatar Marwes commented on July 20, 2024

sep_end_by and sep_end_by1 were added in 7ae8d32

from combine.

tailhook avatar tailhook commented on July 20, 2024

@Marwes works fine. Thanks a lot!

from combine.

Marwes avatar Marwes commented on July 20, 2024

eof added in 1.3.0

from combine.

Marwes avatar Marwes commented on July 20, 2024

Closing since all relevant parsers have presumably been added by now. If a parser is still missing then just open a new issue!

from combine.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.