Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

a couple of doc wish-list items #14

Closed
leifj opened this issue Mar 15, 2021 · 7 comments
Closed

a couple of doc wish-list items #14

leifj opened this issue Mar 15, 2021 · 7 comments
Assignees
Labels
documentation Improvements or additions to documentation

Comments

@leifj
Copy link

leifj commented Mar 15, 2021

It would be very nice to have the following:

  • a quick conversion guide for sabre/slang -> slurp
  • the getting started guide mentions how to expose values and functions but this is missing
@lthibault lthibault self-assigned this Mar 16, 2021
@lthibault lthibault added the documentation Improvements or additions to documentation label Mar 16, 2021
@lthibault
Copy link
Collaborator

Hi Lief, it's good to hear from you! Thanks for your patience with our slang->slurp migration... I promise it's the last one 😬 ! How are the simulations coming along?

These are great suggestions, and I'll add these to the Wiki ASAP 👍 . Just to clarify:

  1. Are you having any trouble converting from slang to slurp? If so, please feel free to let us know in this issue and we'll get it sorted.
  2. Just to verify: when you say "expose values and functions", you are referring to binding values/functions to the environment (as in this example), correct?

Thanks for flagging these issues. It's often hard to tell if the docs are clear and complete since we are contaminated by our internal knowledge of the library, so this kind of feedback is super helpful.

@lthibault
Copy link
Collaborator

@leifj I've drafted up a page about binding values to the environment. Let me know if I've missed anything important.

@leifj
Copy link
Author

leifj commented Mar 17, 2021

Hi Lief, it's good to hear from you! Thanks for your patience with our slang->slurp migration... I promise it's the last one ! How are the simulations coming along?

Thx :-)

SUNET/tq is coming along nicely

Looking at slurp I think you guys have nailed some of the challenges I've been fighting using lisp as a DSL for building async pipelines so I'm very happy.

These are great suggestions, and I'll add these to the Wiki ASAP . Just to clarify:

  1. Are you having any trouble converting from slang to slurp? If so, please feel free to let us know in this issue and we'll get it sorted.

Mostly I've been looking to make sure slurp is mostly on feature-parity with slurp/slang or if I'm supposed to wait before taking the plunge... I can clearly see that slurp is much better than slang/sabre so I understand I'm moving but I am trying to understand the following to decide the right time:

  1. is there going to be a "sabre for slurp" or is slurp expected to contain most of whats in sabre+slang
  2. is namespaces coming to slurp (or some other project on top of slurp)?
  3. what are some of the other "gotchas" I should be aware of - a couple of bullet points about what the major differences are would be gold
  1. Just to verify: when you say "expose values and functions", you are referring to binding values/functions to the environment (as in this example), correct?

Yeah that did the trick!

Thanks for flagging these issues. It's often hard to tell if the docs are clear and complete since we are contaminated by our internal knowledge of the library, so this kind of feedback is super helpful.

I know it well... This stuff is made of awsome btw!

@lthibault
Copy link
Collaborator

Looking at slurp I think you guys have nailed some of the challenges I've been fighting using lisp as a DSL for building async pipelines so I'm very happy.

Awesome! I'm very glad to hear it!

Mostly I've been looking to make sure slurp is mostly on feature-parity with slurp/slang or if I'm supposed to wait before taking the plunge... I can clearly see that slurp is much better than slang/sabre so I understand I'm moving but I am trying to understand the following to decide the right time:

The short answer is that we are not planning on building a specific lisp dialect. Slurp is intended to be a language-building toolkit rather than a language implementation, proper.

That said, Slang already includes most of the special forms you would expect from a full-blown lisp, so the DIY part of the language should be small.

  1. is there going to be a "sabre for slurp" or is slurp expected to contain most of whats in sabre+slang

As mentioned above, Slurp is analogous to Sabre. There are no plans for a new Slang (unless @spy16 is cooking up something I'm not aware of).

  1. is namespaces coming to slurp (or some other project on top of slurp)?

Yes, absolutely. This is one of the most important features for me, personally, so it will definitely happen. See #1.

  1. what are some of the other "gotchas" I should be aware of - a couple of bullet points about what the major differences are would be gold

Slurp was actually designed to fix a number of "gotchas" in Sabre (namely: decoupling syntactic analysis from evaluation, and decoupling evaluation from the data-structure itself), so there should be fewer gotchas in Slurp than any of its predecessors. Off the top of my head I can't think of anything fundamental.

In short, any gotcha in Slurp is just a case of "we haven't implemented this yet". Right now, the following are in various states of completion:

Most of these issues should be pretty quick to implement, so if any of them are blocking you, let us know and we can prioritize them.

In case it's helpful, https://github.com/wetware/ww uses Slurp in its pkg/lang subpackage (see internal/cmd/shell for the interpreter setup). It modifies nearly every part of the Slurp stack, including the data-structures, the analyzer, and the special forms, so I think it's a real testament to the flexibility of Slurp's design. Wetware is a big project (and very much WIP), so let me know if you need help navigating, or understanding something in particular.

I know it well... This stuff is made of awsome btw!

😊

SUNET/tq is coming along nicely

This is really cool! What are you using it for?

@lthibault
Copy link
Collaborator

@leifj I've implemented the let special form today (see #15).

I'm closing this issue, but feel free to follow up with any questions/comments here.

@leifj
Copy link
Author

leifj commented Mar 18, 2021

Looking at slurp I think you guys have nailed some of the challenges I've been fighting using lisp as a DSL for building async pipelines so I'm very happy.

Awesome! I'm very glad to hear it!

Mostly I've been looking to make sure slurp is mostly on feature-parity with slurp/slang or if I'm supposed to wait before taking the plunge... I can clearly see that slurp is much better than slang/sabre so I understand I'm moving but I am trying to understand the following to decide the right time:

The short answer is that we are not planning on building a specific lisp dialect. Slurp is intended to be a language-building toolkit rather than a language implementation, proper.

That said, Slang already includes most of the special forms you would expect from a full-blown lisp, so the DIY part of the language should be small.

  1. is there going to be a "sabre for slurp" or is slurp expected to contain most of whats in sabre+slang

As mentioned above, Slurp is analogous to Sabre. There are no plans for a new Slang (unless @spy16 is cooking up something I'm not aware of).

That is super-clear, thx!

  1. is namespaces coming to slurp (or some other project on top of slurp)?

Yes, absolutely. This is one of the most important features for me, personally, so it will definitely happen. See #1.

  1. what are some of the other "gotchas" I should be aware of - a couple of bullet points about what the major differences are would be gold

Slurp was actually designed to fix a number of "gotchas" in Sabre (namely: decoupling syntactic analysis from evaluation, and decoupling evaluation from the data-structure itself), so there should be fewer gotchas in Slurp than any of its predecessors. Off the top of my head I can't think of anything fundamental.

In short, any gotcha in Slurp is just a case of "we haven't implemented this yet". Right now, the following are in various states of completion:

Most of these issues should be pretty quick to implement, so if any of them are blocking you, let us know and we can prioritize them.

Great - and for me the major blocker seems to be namespaces.

It would be great if the doc had a short "conversion guide"; i.e. what to think about when converting from a sabre/slang integration to slurp - major behavioral/datatype differences, pattern X was replaced with pattern Y etc.

In case it's helpful, https://github.com/wetware/ww uses Slurp in its pkg/lang subpackage (see internal/cmd/shell for the interpreter setup). It modifies nearly every part of the Slurp stack, including the data-structures, the analyzer, and the special forms, so I think it's a real testament to the flexibility of Slurp's design. Wetware is a big project (and very much WIP), so let me know if you need help navigating, or understanding something in particular.

I know it well... This stuff is made of awsome btw!

SUNET/tq is coming along nicely

This is really cool! What are you using it for?

An application message-bus without having to run a lot of infrastructure.

@lthibault
Copy link
Collaborator

@leifj

Great - and for me the major blocker seems to be namespaces.

Noted. I don't think there's much to it, so I'll try to implement this over the next week or so (though I can't promise anything).

It would be great if the doc had a short "conversion guide"; i.e. what to think about when converting from a sabre/slang integration to slurp - major behavioral/datatype differences, pattern X was replaced with pattern Y etc.

I'll have to think about this because it's been just long enough that I'm having trouble recalling all the changes. @spy16 You're the mastermind behind Slurp's architecture -- any chance I could kick this part over to you (because I think Lief has a point...)?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

2 participants