Re: [racket-users] Typed Racket: type relations

2021-04-19 Thread Ben Greenman
 3. I don't see any boundaries where you describe -- can you say more?
>>>
>>> Run typed-performance.rkt and see:
>>
>> This might be related to
>> https://github.com/racket/typed-racket/issues/289.
>>
>
> So basically my unsafe-reprovide module should probably use some syntax
> trickery to generate new bindings for all typed provides it requires and
> re-provide them unsafely renaming them back to original name? I think I
> can do something like that using relatively simple syntax macro.
>
> Do I understand it correctly?
>
> Of course Ben's hint at unsafe-reprovide is something I'd like to
> investigate.

My hint turned into a PR and merged a few years ago.
https://github.com/racket/typed-racket/pull/657

Here's the output I see from `typed-performance.rkt` . I'm on a commit
from Jan 20. Does this look more like you'd expect?

```
---
typed: cpu time: 2990 real time: 3023 gc time: 65
unsafe: cpu time: 405 real time: 408 gc time: 5
typed, unsafe provided: cpu time: 692 real time: 697 gc time: 10
plain: cpu time: 748 real time: 752 gc time: 3
---
typed: cpu time: 2817 real time: 2825 gc time: 11
unsafe: cpu time: 414 real time: 417 gc time: 3
typed, unsafe provided: cpu time: 671 real time: 675 gc time: 4
plain: cpu time: 750 real time: 754 gc time: 5
===
---
typed: cpu time: 1678 real time: 1684 gc time: 0
unsafe: cpu time: 161 real time: 165 gc time: 0
typed, unsafe provided: cpu time: 175 real time: 178 gc time: 0
plain: cpu time: 180 real time: 184 gc time: 0
---
typed: cpu time: 1744 real time: 1755 gc time: 0
unsafe: cpu time: 165 real time: 168 gc time: 0
typed, unsafe provided: cpu time: 164 real time: 167 gc time: 0
plain: cpu time: 195 real time: 198 gc time: 0
```

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CAFUu9R4SX5BePy%2BNwM76iMrF%2BoMdtjxmZGKcS94USJ%2B8aHR5HQ%40mail.gmail.com.


Re: [racket-users] Smart contracts in Racket

2021-04-19 Thread Adam Golding
I was just told this topic is off-topic on the racket discord--clearly an
injustice:

[image: image.png]

On Mon, 19 Apr 2021 at 04:16, Adam Golding  wrote:

> Also I just discovered this:
> http://www.michaelburge.us/2017/11/28/write-your-next-ethereum-contract-in-pyramid-scheme.html
>
> On Mon, 19 Apr 2021 at 03:42, Adam Golding  wrote:
>
>> Beatri please tell us more and publish to Github :-)  It seems to me that
>> some racketers should enter the https://moralis.io/hackathon/ to make
>> racket contracts work across other smart contract systems, as this platform
>> has already done some of the boring leg work, otherwise, how will the idea
>> of a 'racket web server' adapt to the needs of a web3 site that interfaces
>> with smart contracts on multiple blockchains?
>>
>> On Thu, 25 Mar 2021 at 11:44, Beatriz Moreira 
>> wrote:
>>
>>> Hi!
>>> Thank you for the Goblins idea, but that's not really what I have in
>>> mind.
>>> What I did in Racket was a formalisation of two smart contract core
>>> languages, to be able to see the execution step-by-step.
>>> What I had in mind was something like a git where I could publish my
>>> work for case study purposes.
>>> Thank you :D
>>>
>>> A terça-feira, 16 de março de 2021 à(s) 19:24:35 UTC, cwebber escreveu:
>>>
 James Platt writes:

 > On Mar 15, 2021, at 7:01 PM, Beatriz Moreira wrote:
 >
 >> Hello! I recently used Racket as a tool to see the small step
 >> execution of some smart contract languages and I was wondering if
 >> there is anywhere i can submit my work or share it with the Racket
 >> community.
 >
 > One place might be the Racket Artifacts site. I think it's mainly
 > intended for short demonstrations of code but, if yours is not too
 > long, that might be the place.
 >
 > https://github.com/racket/racket/wiki/Artifacts
 >
 > I am interested in smart contracts, as well, for a possible future
 > addition to a project I am working on but it will be a while before I
 > get to that point.

 Spritely Goblins is probably what you want to look at, or will after
 the
 next release (v0.8) comes out:

 https://docs.racket-lang.org/goblins/index.html

 In the not too distant future, Spritely and Agoric's CapTP should
 converge. Agoric's current work is all based around smart contracts:

 https://agoric.com/
 https://github.com/Agoric/agoric-sdk/issues/1827

 There's a lot of confusion out there about what "smart contracts" mean;
 most of the examples tend to assume it has to do with blockchains. In
 fact, work on smart contracts precedes blockchains by several decades.
 If you look at http://www.erights.org/ on which many of the ideas in
 Spritely Goblins is based, you'll notice that it has the word "smart
 contracts" prominently, yet this was well over a decade before
 blockchains even existed. What the heck?

 Smart contracts as something implemented with distributed objects can
 be
 best understood probably by reading Capability Based Financial
 Instruments:

 http://erights.org/elib/capability/ode/index.html

 The mint example from that paper is implemented in Goblins:


 https://gitlab.com/spritely/goblins/-/blob/dev/goblins/actor-lib/simple-mint.rkt

 That's right, in about 25 lines of Goblins code you can have a
 functioning bank of sorts, which preserves financial integrity and even
 permits networked accounts. No blockchain required.

 Yet, you could add a blockchain, or even turn Goblins into a blockchain
 if you wanted. (Since Goblins' actor state is transactional and
 snapshottable, you can have a merkle tree of all inputs, and global
 consensus on the set of messages accepted by the network, and all
 participants can replay and simulate the same abstract machine. This is
 fairly trivial to do in Goblins.)

 But more interestingly, Agoric has already done the work of abstracting
 even remote blockchains as abstract machines on the network. Since
 we'll be implementing the same CapTP, when the time comes you'll be
 able
 to access all that for free, even though Agoric programs are written in
 Javascript and Goblins programs in Racket.

 Anyway, the next release of Goblins, coming soon, should allow for
 beginning to play with this kind of stuff on the network more easily
 than in the present (v0.7) stuff, which currently takes a lot of work.
 So maybe if you can wait a few weeks, it'll be easier to talk about.

 But "smart contracts" is a use case, a broad problem domain. What kind
 of smart contracts are you wanting to write?

 - Chris

>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Racket Users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to 

Re: [racket-users] Typed Racket: type relations

2021-04-19 Thread Dominik Pantůček
>>>
>>> However, I would suggest that the right fix here is to use refinement
>>> types, and specify exactly what you want. Unfortunately, the
>>> refinement types feature (good intro here:
>>> https://blog.racket-lang.org/2017/11/adding-refinement-types.html)
>>> isn't quite able to prove everything you want, but that's the
>>> direction we should go. For example, it can already prove that rd in
>>> the rgb-distance^2 function has this type: (define-type PMByte (Refine
>>> [v : Fixnum] (and (< v 256) (< -256 v
>>
>> This is exactly what I was looking at (and for), but I am unable to use
>> it correctly:
> 
> I think you need to add #:with-refinements after the #lang line.

Awesome! Now TR can properly reason about the differences.

I guess it is not possible to make TR deduce the proper type of (* rd
rd) like:

(define-type Byte^2 (Refine [v : Fixnum] (and (>= v 0) (< v (* 255 255)

Are there any plans of adding such reasoning?

Honestly, when I went through the code for binary fx... operations I
realized that making them variadic is possible but not straightforward
at all. Without digging deeper it seems to me that it is actually a lot
of work. I will look into it again later on.

Funny thing is that even trying to verify my color-blending code with TR
helped me improve that code - quite to my surprise. The original idea
was to start with lighting code (intensity, falloff, colored light) and
then proceed on to more complex parts (something like what I tried with
verifying the unsafe-structs usage). And it turned out that even that
was a bit too much so I had to go down to the color handling code.

I am afraid that at the moment TR cannot replace contracts in my design
process. That is a pity - because although I mostly do "design by
contract", it is NOT verification. So sometimes I have to run hoops thru
loops to make the program fail on particular contract to see what is
wrong. With TR my aim is to shift this effort from runtime to compile
(or more precisely design) time.

Still it is awesome tool for both code profiling and proving correctness
of individual modules.

> 
>>> 3. I don't see any boundaries where you describe -- can you say more?
>>
>> Run typed-performance.rkt and see:
> 
> This might be related to https://github.com/racket/typed-racket/issues/289.
> 

So basically my unsafe-reprovide module should probably use some syntax
trickery to generate new bindings for all typed provides it requires and
re-provide them unsafely renaming them back to original name? I think I
can do something like that using relatively simple syntax macro.

Do I understand it correctly?

Of course Ben's hint at unsafe-reprovide is something I'd like to
investigate.


Cheers,
Dominik

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/af71d1d3-6246-bcae-31ba-be2b064baba7%40trustica.cz.


Re: [racket-users] Typed Racket: type relations

2021-04-19 Thread Sam Tobin-Hochstadt
On Sun, Apr 18, 2021 at 3:05 AM Dominik Pantůček
 wrote:
>
> 0. Thank you very much for looking into this.
>
> On 18. 04. 21 4:57, Sam Tobin-Hochstadt wrote:
> > Ok, three parts:
> >
> > 1. Is it possible to make `average` on `Byte` provably produce a
> > `Byte`? This is not going to be possible with plain Typed Racket, even
> > with refinements to the numeric tower. The problem is that maintaining
> > the invariant that a <= (* n 255) is not something that we can express
> > just with the sets of values Typed Racket reasons about.
>
> That is what I was afraid of. Mathematically speaking, the proof is
> almost trivial. But expressing that turned out to be a tough nut to crack.
>
> I looked into base-env-numeric.rkt and I see that there is quite some
> type reasoning already implemented. And it works great for simple cases
> like (fxand 255 anything) - : Byte.
>
> Maybe adding an explicitly ranged Integer type and after reasoning about
> the result match the final range against the set of coarse-grained types
> could be a solution? Albeit not a trivial one in terms of implementing it.
>
> >
> > 2. The rgb-distance^2 issue is really just that there's no negative
> > counterpart to `Byte`, so `Byte` minus `Byte` is `Fixnum`. We could
> > add that, at the cost of extra complexity in the numeric tower
> > generally.
> >
> > However, I would suggest that the right fix here is to use refinement
> > types, and specify exactly what you want. Unfortunately, the
> > refinement types feature (good intro here:
> > https://blog.racket-lang.org/2017/11/adding-refinement-types.html)
> > isn't quite able to prove everything you want, but that's the
> > direction we should go. For example, it can already prove that rd in
> > the rgb-distance^2 function has this type: (define-type PMByte (Refine
> > [v : Fixnum] (and (< v 256) (< -256 v
>
> This is exactly what I was looking at (and for), but I am unable to use
> it correctly:

I think you need to add #:with-refinements after the #lang line.

> > 3. I don't see any boundaries where you describe -- can you say more?
>
> Run typed-performance.rkt and see:

This might be related to https://github.com/racket/typed-racket/issues/289.

Sam

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CAK%3DHD%2BYGgTbFjyaTQ8ETuXmRB4%2BsYoW7iYAujjWcFa0FNHEdrg%40mail.gmail.com.


Re: [racket-users] Typed Racket: type relations

2021-04-19 Thread Hendrik Boom
On Sun, Apr 18, 2021 at 09:05:11AM +0200, Dominik Pantůček wrote:
...
...
> 
> I would really like to be able to reason about the Integer bounds (and
> therefore signs) dynamically. So that when you have something like:
> 
> (: square (-> Fixnum Nonnegative-Fixnum))
> (define (square x)
>   (fx* x x))
> 
> You will get something better than:

> 
> multiplication.rkt:7:2: Type Checker: type mismatch
>   expected: Nonnegative-Fixnum
>   given: Fixnum
>   in: (fx* x x)
> 
> I will look into the refinements implementation to see what are the
> current limits and what the future possibilities might be.

Reading the documentation you link to, it seems that the problem is that 
(fx* x x) is not linear in x.
It says that it can reason only about linear expressions.  This is a 
quadratic form.

-- hendrik

...
...

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/20210419113103.c4fupxvl6ieb3uub%40topoi.pooq.com.


Re: [racket-users] Tiny improvement to be made to pkgs.racket-lang.org

2021-04-19 Thread Roger Keays
In general, I think the package submission form has no validation. I made the 
mistake of putting in a version number (rather than using that field to add a 
new version sub-form) and it spat back an empty form. Took me ages to figure 
out what I was doing wrong.

On Mon, Apr 19, 2021 at 01:06:22AM -0700, Dexter Lagan wrote:
> Hi folks,
> 
>   I posted my first package the other day (that eyesore of Cobalt 2 theme). My
> repo has a 'main' branch instead of 'master'. pkgs.racket-lang.org didn't
> display any error when I clicked on the 'Save Changes' button. It simply went
> back to the package list, as if nothing had happened. At first, I thought the
> package had been accepted, and it's only after listing my packages that I
> noticed it hadn't. I fixed the branch name and submitted it again, this time 
> it
> displayed the package info page.
> 
>   It'd be nice to display at least some form of error if the package isn't
> valid. Say, "this repo has no master branch, try again".
> 
> Dex
> 
> --
> You received this message because you are subscribed to the Google Groups
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email
> to racket-users+unsubscr...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/
> racket-users/04c7c2b8-9708-4f76-bf1d-3b6df5689ecbn%40googlegroups.com.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/sigid.274341d7a4.20210419101932.GA1973%40papaya.papaya.


Re: [racket-users] Smart contracts in Racket

2021-04-19 Thread Adam Golding
Also I just discovered this:
http://www.michaelburge.us/2017/11/28/write-your-next-ethereum-contract-in-pyramid-scheme.html

On Mon, 19 Apr 2021 at 03:42, Adam Golding  wrote:

> Beatri please tell us more and publish to Github :-)  It seems to me that
> some racketers should enter the https://moralis.io/hackathon/ to make
> racket contracts work across other smart contract systems, as this platform
> has already done some of the boring leg work, otherwise, how will the idea
> of a 'racket web server' adapt to the needs of a web3 site that interfaces
> with smart contracts on multiple blockchains?
>
> On Thu, 25 Mar 2021 at 11:44, Beatriz Moreira 
> wrote:
>
>> Hi!
>> Thank you for the Goblins idea, but that's not really what I have in mind.
>> What I did in Racket was a formalisation of two smart contract core
>> languages, to be able to see the execution step-by-step.
>> What I had in mind was something like a git where I could publish my work
>> for case study purposes.
>> Thank you :D
>>
>> A terça-feira, 16 de março de 2021 à(s) 19:24:35 UTC, cwebber escreveu:
>>
>>> James Platt writes:
>>>
>>> > On Mar 15, 2021, at 7:01 PM, Beatriz Moreira wrote:
>>> >
>>> >> Hello! I recently used Racket as a tool to see the small step
>>> >> execution of some smart contract languages and I was wondering if
>>> >> there is anywhere i can submit my work or share it with the Racket
>>> >> community.
>>> >
>>> > One place might be the Racket Artifacts site. I think it's mainly
>>> > intended for short demonstrations of code but, if yours is not too
>>> > long, that might be the place.
>>> >
>>> > https://github.com/racket/racket/wiki/Artifacts
>>> >
>>> > I am interested in smart contracts, as well, for a possible future
>>> > addition to a project I am working on but it will be a while before I
>>> > get to that point.
>>>
>>> Spritely Goblins is probably what you want to look at, or will after the
>>> next release (v0.8) comes out:
>>>
>>> https://docs.racket-lang.org/goblins/index.html
>>>
>>> In the not too distant future, Spritely and Agoric's CapTP should
>>> converge. Agoric's current work is all based around smart contracts:
>>>
>>> https://agoric.com/
>>> https://github.com/Agoric/agoric-sdk/issues/1827
>>>
>>> There's a lot of confusion out there about what "smart contracts" mean;
>>> most of the examples tend to assume it has to do with blockchains. In
>>> fact, work on smart contracts precedes blockchains by several decades.
>>> If you look at http://www.erights.org/ on which many of the ideas in
>>> Spritely Goblins is based, you'll notice that it has the word "smart
>>> contracts" prominently, yet this was well over a decade before
>>> blockchains even existed. What the heck?
>>>
>>> Smart contracts as something implemented with distributed objects can be
>>> best understood probably by reading Capability Based Financial
>>> Instruments:
>>>
>>> http://erights.org/elib/capability/ode/index.html
>>>
>>> The mint example from that paper is implemented in Goblins:
>>>
>>>
>>> https://gitlab.com/spritely/goblins/-/blob/dev/goblins/actor-lib/simple-mint.rkt
>>>
>>> That's right, in about 25 lines of Goblins code you can have a
>>> functioning bank of sorts, which preserves financial integrity and even
>>> permits networked accounts. No blockchain required.
>>>
>>> Yet, you could add a blockchain, or even turn Goblins into a blockchain
>>> if you wanted. (Since Goblins' actor state is transactional and
>>> snapshottable, you can have a merkle tree of all inputs, and global
>>> consensus on the set of messages accepted by the network, and all
>>> participants can replay and simulate the same abstract machine. This is
>>> fairly trivial to do in Goblins.)
>>>
>>> But more interestingly, Agoric has already done the work of abstracting
>>> even remote blockchains as abstract machines on the network. Since
>>> we'll be implementing the same CapTP, when the time comes you'll be able
>>> to access all that for free, even though Agoric programs are written in
>>> Javascript and Goblins programs in Racket.
>>>
>>> Anyway, the next release of Goblins, coming soon, should allow for
>>> beginning to play with this kind of stuff on the network more easily
>>> than in the present (v0.7) stuff, which currently takes a lot of work.
>>> So maybe if you can wait a few weeks, it'll be easier to talk about.
>>>
>>> But "smart contracts" is a use case, a broad problem domain. What kind
>>> of smart contracts are you wanting to write?
>>>
>>> - Chris
>>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Racket Users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to racket-users+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/racket-users/6066d33f-f6e5-44ed-bed9-edda173b15c2n%40googlegroups.com
>> 

[racket-users] Tiny improvement to be made to pkgs.racket-lang.org

2021-04-19 Thread Dexter Lagan
Hi folks,

  I posted my first package the other day (that eyesore of Cobalt 2 theme). 
My repo has a 'main' branch instead of 'master'. pkgs.racket-lang.org 
didn't display any error when I clicked on the 'Save Changes' button. It 
simply went back to the package list, as if nothing had happened. At first, 
I thought the package had been accepted, and it's only after listing my 
packages that I noticed it hadn't. I fixed the branch name and submitted it 
again, this time it displayed the package info page.

  It'd be nice to display at least some form of error if the package isn't 
valid. Say, "this repo has no master branch, try again".

Dex

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/04c7c2b8-9708-4f76-bf1d-3b6df5689ecbn%40googlegroups.com.


Re: [racket-users] Smart contracts in Racket

2021-04-19 Thread Adam Golding
Beatri please tell us more and publish to Github :-)  It seems to me that
some racketers should enter the https://moralis.io/hackathon/ to make
racket contracts work across other smart contract systems, as this platform
has already done some of the boring leg work, otherwise, how will the idea
of a 'racket web server' adapt to the needs of a web3 site that interfaces
with smart contracts on multiple blockchains?

On Thu, 25 Mar 2021 at 11:44, Beatriz Moreira 
wrote:

> Hi!
> Thank you for the Goblins idea, but that's not really what I have in mind.
> What I did in Racket was a formalisation of two smart contract core
> languages, to be able to see the execution step-by-step.
> What I had in mind was something like a git where I could publish my work
> for case study purposes.
> Thank you :D
>
> A terça-feira, 16 de março de 2021 à(s) 19:24:35 UTC, cwebber escreveu:
>
>> James Platt writes:
>>
>> > On Mar 15, 2021, at 7:01 PM, Beatriz Moreira wrote:
>> >
>> >> Hello! I recently used Racket as a tool to see the small step
>> >> execution of some smart contract languages and I was wondering if
>> >> there is anywhere i can submit my work or share it with the Racket
>> >> community.
>> >
>> > One place might be the Racket Artifacts site. I think it's mainly
>> > intended for short demonstrations of code but, if yours is not too
>> > long, that might be the place.
>> >
>> > https://github.com/racket/racket/wiki/Artifacts
>> >
>> > I am interested in smart contracts, as well, for a possible future
>> > addition to a project I am working on but it will be a while before I
>> > get to that point.
>>
>> Spritely Goblins is probably what you want to look at, or will after the
>> next release (v0.8) comes out:
>>
>> https://docs.racket-lang.org/goblins/index.html
>>
>> In the not too distant future, Spritely and Agoric's CapTP should
>> converge. Agoric's current work is all based around smart contracts:
>>
>> https://agoric.com/
>> https://github.com/Agoric/agoric-sdk/issues/1827
>>
>> There's a lot of confusion out there about what "smart contracts" mean;
>> most of the examples tend to assume it has to do with blockchains. In
>> fact, work on smart contracts precedes blockchains by several decades.
>> If you look at http://www.erights.org/ on which many of the ideas in
>> Spritely Goblins is based, you'll notice that it has the word "smart
>> contracts" prominently, yet this was well over a decade before
>> blockchains even existed. What the heck?
>>
>> Smart contracts as something implemented with distributed objects can be
>> best understood probably by reading Capability Based Financial
>> Instruments:
>>
>> http://erights.org/elib/capability/ode/index.html
>>
>> The mint example from that paper is implemented in Goblins:
>>
>>
>> https://gitlab.com/spritely/goblins/-/blob/dev/goblins/actor-lib/simple-mint.rkt
>>
>> That's right, in about 25 lines of Goblins code you can have a
>> functioning bank of sorts, which preserves financial integrity and even
>> permits networked accounts. No blockchain required.
>>
>> Yet, you could add a blockchain, or even turn Goblins into a blockchain
>> if you wanted. (Since Goblins' actor state is transactional and
>> snapshottable, you can have a merkle tree of all inputs, and global
>> consensus on the set of messages accepted by the network, and all
>> participants can replay and simulate the same abstract machine. This is
>> fairly trivial to do in Goblins.)
>>
>> But more interestingly, Agoric has already done the work of abstracting
>> even remote blockchains as abstract machines on the network. Since
>> we'll be implementing the same CapTP, when the time comes you'll be able
>> to access all that for free, even though Agoric programs are written in
>> Javascript and Goblins programs in Racket.
>>
>> Anyway, the next release of Goblins, coming soon, should allow for
>> beginning to play with this kind of stuff on the network more easily
>> than in the present (v0.7) stuff, which currently takes a lot of work.
>> So maybe if you can wait a few weeks, it'll be easier to talk about.
>>
>> But "smart contracts" is a use case, a broad problem domain. What kind
>> of smart contracts are you wanting to write?
>>
>> - Chris
>>
> --
> You received this message because you are subscribed to the Google Groups
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to racket-users+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/racket-users/6066d33f-f6e5-44ed-bed9-edda173b15c2n%40googlegroups.com
> 
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view 

Re: [racket-users] Add Link to the racket Discord to the racket website?

2021-04-19 Thread Adam Golding
seconded

On Sun, 18 Apr 2021 at 14:56, schle...@gmail.com 
wrote:

>
> The racket discord is managed quite well, I think it should be added to
> the racket website so that newcomers can find it easier, just a thought.
>
> Maybe below the link to slack?
>
> --
> You received this message because you are subscribed to the Google Groups
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to racket-users+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/racket-users/a8e865db-f585-477d-b397-fceaa7cb3131n%40googlegroups.com
> 
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CALiGnDBqAi-cywLR_DqDy7_LqXWJdxnCsZqETwrHuej8OvduTw%40mail.gmail.com.