Re: [racket-users] problem with current-error-port in scribble interaction

2019-06-27 Thread Ryan Culpepper
The `uncaught-exception-handler` parameter controls the *bottom* of the exception handler stack, so it won't override the exception handler installed by Scribble's `interaction` form. If you use `with-handlers` (or `call-with-exception-handler`) instead, it should work. The

Re: [racket-users] Name of undefined identifier as string in macro

2019-08-03 Thread Ryan Culpepper
On 8/3/19 10:48 AM, Zelphir Kaltstahl wrote: Hi! I am trying to write a macro, which checks the name of an argument for presence a substring. This is not the main purpose of the macro, but I want to do different things depending on the substring being contained or not contained. Here is

Re: [racket-users] Racket Jupyter/nextJournal

2019-08-14 Thread Ryan Culpepper
On 8/14/19 2:57 PM, tbrooke wrote: There has been some discussion about Racket on Jupyter. nextJournal is a fairly new project for hosted notebooks that is written in Clojure and has support for Clojure as well as several other languages. In addition to Clojure they have templates for Julia, 

Re: [racket-users] Can I use the macro stepper to debug an infinite expansion loop?

2019-07-29 Thread Ryan Culpepper
The macro stepper *should* pop up a dialog after a certain (large) number of steps and ask if you want to interrupt it and see the expansion up to that point. For example, try this: #lang racket (define-syntax-rule (m) (m)) (m) The dialog should show up in a second or two. It can't

Re: [racket-users] DrRacket UI question ...

2019-07-21 Thread Ryan Culpepper
On 7/21/19 10:41 PM, Tim Meehan wrote: When hovering over names in a program that I downloaded to examine, I noticed a purple question mark that I had not remembered seeing before. I am used to hovering over a name and seeing where else it is used, etc., but I don't remember seeing the purple

Re: [racket-users] syntax-parse ellipsis question

2019-09-21 Thread Ryan Culpepper
On 9/21/19 10:15 PM, Jonathan Simpson wrote: Given this macro that I'm experimenting with: (syntax-parse #'(1 2 2 a 2 2 b 2 c) [(1 (~seq n:nat ...+ x) ...) #'((n ... x) ...)]) How would I change it so that it returns #'(2 2 a 2 2 b 2 c) instead of #'((2 2 a) (2 2 b) (2 c)) ? I don't want

Re: [racket-users] How do I secure secrets in memory?

2019-09-27 Thread Ryan Culpepper
On 9/27/19 6:56 PM, Sage Gerard wrote: I got sloppy here in a Stripe integration: https://github.com/zyrolasting/stripe-integration/blob/master/main.rkt#L31 I'm not an InfoSec expert, but I know I'd like to secure the secret key used here in memory instead of using a parameter. I'd probably

Re: [racket-users] Help me understand FFI callouts in this context?

2019-10-24 Thread Ryan Culpepper
On 10/25/19 12:45 AM, Sage Gerard wrote: I am porting some C++ code to Racket that uses a function pointer. C++ origin: See 294 through 306: https://github.com/Erkaman/vulkan_minimal_compute/blob/master/src/main.cpp#L294 Racket destination:

Re: [racket-users] Implementation of paraeters

2020-03-02 Thread Ryan Culpepper
A parameter object itself is essentially just a key. To get its value, you first look up the current parameterization in the current continuation's continuation-marks. The parameterization contains an immutable eq?-hash mapping parameter keys to thread cells. The parameter's value is the value of

Re: [racket-users] Rolling dice game

2020-02-03 Thread Ryan Culpepper
On 2/3/20 12:31 PM, Wilzoo wrote: Hi guys, so I am working on rolling dice game in GUI, the game rules will be something like rolling 3 dices and then giving out points to 2 players based on the rolled values. Im now stuck on the showing value in GUI. Basically what I need is to show rolled

Re: [racket-users] Create an identifier in syntax

2020-01-23 Thread Ryan Culpepper
On 1/23/20 3:59 PM, Sean Kemplay wrote: Hello, I am exploring macros and am trying to define a variable at the top level (with the goal in mind to dynamically define a group of functions from a macro). with-syntax works fine however I was just wondering if it is possible to directly inject

Re: [racket-users] Opening unix domain socket with SOCK_SEQPACKET in Racket?

2020-01-28 Thread Ryan Culpepper
On 1/29/20 12:14 AM, Milo Turner wrote: Hello all, I'm wondering if it's possible to open a unix domain socket with SOCK_SEQPACKET in Racket? It looks like currently unix-socket-lib uses SOCK_STREAM, and doesn't allow you to configure that flag. Is there a reason for this, or would it be a

Re: [racket-users] How to convert String to Integer

2020-02-11 Thread Ryan Culpepper
What should `(myconversion "apple")` return? What should `(myconversion "12.3")` return? What does `string->number` do in each of those cases? Ryan On Tue, Feb 11, 2020 at 11:34 AM Alain De Vos wrote: > I tried the following function to conver a String to an Integer. > > #lang typed/racket >

Re: [racket-users] Separate compilation/caching for Scribble?

2020-03-25 Thread Ryan Culpepper
You can use `raco make` (or `raco setup` for docs of installed packages) to compile the Scribble files, but that won't compile the examples. Those are dynamically evaluated when the Scribble documents are run. For `make-log-based-eval`, are you using a separate evaluator (and separate log file)

Re: [racket-users] Separate compilation/caching for Scribble?

2020-03-25 Thread Ryan Culpepper
) 'replay 'record)) Ryan On Wed, Mar 25, 2020 at 8:57 PM William J. Bowman wrote: > On Wed, Mar 25, 2020 at 08:51:18PM +0100, Ryan Culpepper wrote: > > You can use `raco make` (or `raco setup` for docs of installed packages) > to > > compile the Scribble files, but that won't co

Re: [racket-users] Make your computer talk in Racket on Windows in 5 lines

2020-05-16 Thread Ryan Culpepper
I wrote a little flashcard program in Racket to help myself learn Czech vocabulary (here: https://github.com/rmculpepper/racket-jazyk), and when run on a Mac it uses `say` for audio. IIRC, I had to install extra "voice" packages for Czech, but that consisted of clicking a few buttons in Settings.

Re: [racket-users] Incorporating Markdown documents into Scribble

2020-09-13 Thread Ryan Culpepper
What should the splicing version do in the following case: some text @(markdown-inline "file-with-sections.md") some trailing text In particular, what should happen to the trailing text? Scribble doesn't have a notion of returning to the top-level after a section. One possibility would be

Re: [racket-users] Incorporating Markdown documents into Scribble

2020-09-13 Thread Ryan Culpepper
Okay, if I understand correctly, you would expect the trailing text in my example to be appended to the final subsection from the file. In that case, does it work if you simply remove the call to `decode-flow` from the definition of `markdown-inline`? Then the function would just return a list of

Re: [racket-users] difference in struct printing from default #:transparent versus make-constructor-style-printer

2020-09-03 Thread Ryan Culpepper
The Racket printer uses a separate property to determine whether a struct is quotable. If you add #:property prop:custom-print-quotable 'never to the declarations of Int2 and Prim2, your program should produce the output you expect. I'll add a note to the docs for

Re: [racket-users] Hygiene for a curried macro

2020-09-30 Thread Ryan Culpepper
Yes, the behavior you're seeing is a consequence of hygiene, and you should see the same behavior in other Scheme implementations. When the expander gets to the `let-third` call, there is a `var` identifier in the macro's template that is used as a binder, and there is a `var` identifier in the

Re: [racket-users] querying MS SQL Server with db-lib (ODBC)

2020-09-19 Thread Ryan Culpepper
The last time I tested connecting to MS SQL Server on Windows (several years ago), I think I was able to connect using some drivers but not others. I was simultaneously trying to figure out authentication and the connection string format, so once I got a working configuration I stopped

Re: [racket-users] Re: local variables are hyperlinked in scribble/manual

2020-05-25 Thread Ryan Culpepper
You can also use make-element-id-transformer, like this: (define-syntax SET (make-element-id-transformer (lambda _ #'(racketvarfont "set" Then Scribble will automatically replace SET within rendered code with the element expression above. Another trick is to break the

Re: [racket-users] Re: Exception throwing in web-server

2020-05-25 Thread Ryan Culpepper
As I understand the HTTP protocol (that is, some but not lots), the most reasonable thing for the server to do if it discovers an error after the status code has been sent seems to be to just hang up and let the client realize that *something* went wrong. I don't mean just truncate the output; I

Re: [racket-users] Exception throwing in web-server

2020-05-25 Thread Ryan Culpepper
internet tells me that browsers don't support them. Ryan On Mon, May 25, 2020 at 9:48 PM Norman Gray wrote: > > Ryan and Matthew, hello. > > On 25 May 2020, at 19:43, Ryan Culpepper wrote: > > > As I understand the HTTP protocol (that is, some but not lots), the > >

Re: [racket-users] What is the purpose of "compact" code paths in print.c?

2020-05-28 Thread Ryan Culpepper
Based on a quick look, I believe it has to do with serializing compiled code, including quoted values embedded in compiled code. Serializing compiled code uses the same entry point as the other printing functions. For example, try this: (write (compile '(quote (1 2 3 and compare the

Re: [racket-users] querying MS SQL Server with db-lib (ODBC)

2020-09-19 Thread Ryan Culpepper
tacontinuation-frame >call-with-empty-metacontinuation-frame-for-swap > > > I also confirmed using odbc-driver-connect directly that no connection is > actually made. Do you have any other suggestions? Thanks again! > > > -- > "Ad astra per alia porci" > >

Re: [racket-users] Help implementing an early return macro

2020-10-28 Thread Ryan Culpepper
This is a nice example of a macro design pattern that I think of as "partial expansion with trampolining". You don't need to deal with the internal definition context API, because you can return definitions to the macro expander, let it handle their interpretation, and then resume your work.

Re: [racket-users] ask the type of a value

2020-08-03 Thread Ryan Culpepper
but beware, for > (for-each (lambda (x) (printf "~a: ~a\n" (~v x #:min-width 28) (struct->vector x))) (list "hello" (let () (struct string (n)) (string 5 "hello" : #(struct:string ...) # : #(struct:string ...) Ryan On Mon, Aug 3, 2020

Re: [racket-users] macro hiding in raco expand

2020-08-10 Thread Ryan Culpepper
You can use the functions from macro-debugger/expand to do this (within limits). Here's a very rough example program that reads one term from stdin and shows its expansion with the given hiding policy (discarding hygiene information---beware). usage: racket expand.rkt < your-example-file.rkt

Re: [racket-users] telling apart files ending with a newline

2020-07-30 Thread Ryan Culpepper
If I understand the docs correctly, the OS-specific handling is in open-input-file, but it is not the default. Here is an alternative to read-line that preserves line endings: #lang racket/base ;; my-read-line : InputPort -> String ;; Like read-line, but preserves line ending. ;; Fails

Re: [racket-users] Can Racket implement LockedMagicDoor example of MIXEDJAVA?

2020-08-12 Thread Ryan Culpepper
On Wed, Aug 12, 2020 at 7:19 PM Siyuan Chen wrote: > Dear Ryan, > > Thanks for your solution, it works nicely! > > But I still have some questions: > > For this particular problem of LockedMagicDoor, we can use `trait` to > solve the `mixin` problem, but can we use the same method for more

Re: [racket-users] Can Racket implement LockedMagicDoor example of MIXEDJAVA?

2020-08-11 Thread Ryan Culpepper
I don't know of a way to solve that problem using the Racket class system alone, but here is a solution that uses traits instead, which allow you to rename the hook methods after the fact so they don't collide. ;; (require racket/trait) (define secure-trait (trait (inherit

Re: [racket-users] Are Regular Expression classes Unicode aware?

2020-07-09 Thread Ryan Culpepper
If you want a regular expression that does match the example string, you can use the \p{property} notation. For example: > (regexp-match? #px"^\\p{L}+$" "h\uFFC3\uFFA9llo") #t The "Regexp Syntax" docs have a grammar for regular expressions with links to examples. Ryan On Thu, Jul 9, 2020

Re: [racket-users] Re: DB hangs with postgres and broken network link

2020-07-03 Thread Ryan Culpepper
Hi Curtis, thanks for the report. No, that isn't supposed to happen. I haven't managed to reproduce a silent hang, and looking over the virtual-connection code it looks like any errors (eg, TCP timeout) should be propagated to the caller. On the other hand, I don't have a way of simulating a

Re: [racket-users] Embedded racket (cs) question

2020-07-13 Thread Ryan Culpepper
I don't know if it helps, but config:installation-name is a promise defined by setup/private/dirs. Ryan On Mon, Jul 13, 2020 at 7:23 PM Matthew Flatt wrote: > I'm not sure how it could be in `dynamic-require` itself, as opposed to > a library that is loaded by `dynamic-require`, but it sounds

Re: [racket-users] Wills, plumbers, and checking if a port is closed

2020-06-30 Thread Ryan Culpepper
Here's a function that creates a thread that waits until a port is closed and then prints a message: (define (watch-for-port-close p) (thread (lambda () (sync (port-closed-evt out)) (eprintf "port closed\n" For example: (define out (open-output-string)) (watch-for-port-close out)

Re: [racket-users] Are Regular Expression classes Unicode aware?

2020-07-11 Thread Ryan Culpepper
that there are some cases with scripts requiring multiple code > points to render a single character such as Arabic with pronunciation marks > e.g. دُ نْيَا. At the moment, I don’t have the time (or need) to > investigate further. > > The depth of Racket’s Unicode support is i

Re: [racket-users] Changing the charset/encoding when using the db library

2020-07-11 Thread Ryan Culpepper
The db library expects to talk to the MySQL server using utf8. If you manage to change the connection encoding (eg with SET NAMES), it is likely to confuse the db library and either corrupt data or make the connection fail with an error. Can you explain what you want to accomplish? Ryan On Sat,

Re: [racket-users] Re: note about parsing speed of xml vs sxml?

2020-06-28 Thread Ryan Culpepper
Thanks Alex for pointing out the use of list->string. I've created a PR ( https://github.com/racket/racket/pull/3275) that changes that code to use string ports instead (similar to Hendrik's suggestion, but the string port handles resizing automatically). Could someone (John?) with some large XML

Re: [racket-users] Poor documentation of List*

2020-06-03 Thread Ryan Culpepper
`(List* T)` is the same as `T`, just as `(list* x)` is the same as `x` (whether `x` is a list or not). > (require typed/racket) > (list* 4 5 6) - : (List* Positive-Byte Positive-Byte Positive-Byte) '(4 5 . 6) > (list* 6) - : Integer [more precisely: Positive-Byte] 6 > (:type

Re: [racket-users] Why am I not fully releasing this SSL listener?

2020-07-24 Thread Ryan Culpepper
If you create the ssl-listener with reuse?=true instead, like this (define listener (ssl-listen port 5 #f #t ctx)) does the problem go away? If so, the error might happen because the OS reserves the port number for a while after the listener is closed; see the paragraph about TIME_WAIT in the

Re: [racket-users] How can I increase expansion+compilation speed?

2020-07-20 Thread Ryan Culpepper
One thing to check is the size of the resulting bytecode file. When I compiled it, I got a 911 KB .zo file. So the most likely reason is that your macros are just producing a lot of code. You can run the macro profiler (eg, `raco macro-profiler aw-schema.rkt`) to get a summary of what macros

Re: [racket-users] resumable exceptions (or: How can I break myself?)

2020-12-29 Thread Ryan Culpepper
I would suggest avoiding exceptions and continuations and have a separate parameter[*] that holds the current unexpected character handler. You'll still have to figure out what kind of thing it returns (void, or a replacement character, or a new input port?), but you have to do that anyway. The

Re: [racket-users] Using expr/c within one syntax class?

2020-12-17 Thread Ryan Culpepper
Based on what you have written so far, the `versions` macro has no sub-expressions, so you shouldn't use `expr/c` at all. It requires version bounds to be in the form of literal strings. So you could describe the macro using a grammar as follows: Expression ::= | (versions Version ...)

Re: [racket-users] Using expr/c within one syntax class?

2020-12-18 Thread Ryan Culpepper
selection ...) #t] > [_ #f]) > > In this case, is it better form to use raise-syntax-error in a #:when > pattern directive for a syntax class, or beneath a clause of syntax-parse? > I suspect that syntax classes should not have an opinion about flow control. > > *~slg* > > >

Re: [racket-users] TLS via make-ssl-connect@?

2020-12-11 Thread Ryan Culpepper
`make-ssl-connect@` automatically uses whatever versions of TLS the OpenSSL library supports, including TLS 1.3 for recent versions of OpenSSL. Ryan On Fri, Dec 11, 2020 at 1:47 AM Sage Gerard wrote: > I've seen articles say "SSL" when they mean "TLS". When I read the docs > for

Re: [racket-users] Why do single-form modules behave differently?

2021-01-03 Thread Ryan Culpepper
It's the consequence of two design goals: 1. The `module` form is separate from the `#%module-begin` syntax hook so that the module's initial language can pick the hook macro that controls the entire module body. 2. Racket's primitive syntax is designed so that it can be re-expanded. (The

[racket-users] synchronization with ffi/unsafe/os-thread

2021-01-26 Thread Ryan Culpepper
I'm trying to figure out how to use ffi/unsafe/os-thread to call a long-running foreign function in an OS thread to avoid blocking other Racket threads. I want to communicate the result of the foreign call to the original Racket thread and have it wake up when the call completes. Normally I could

Re: [racket-users] synchronization with ffi/unsafe/os-thread

2021-01-26 Thread Ryan Culpepper
On Tue, Jan 26, 2021 at 1:23 PM Matthew Flatt wrote: > At Tue, 26 Jan 2021 10:25:42 +0100, Ryan Culpepper wrote: > > This "works", but is it reliably safe to use place-channel-put from an OS > > thread? > > No. It's not intended to work from an arbitrary OS threa

Re: [racket-users] synchronization with ffi/unsafe/os-thread

2021-01-26 Thread Ryan Culpepper
On Tue, Jan 26, 2021 at 3:06 PM Matthew Flatt wrote: > At Tue, 26 Jan 2021 14:49:22 +0100, Ryan Culpepper wrote: > > Thanks for the pointer! Those sound useful, but in the spirit of maximum > > caution, is there a guarantee that the write to the box from the new OS > > t

Re: [racket-users] Injecting local contracts for prefab constructors

2021-05-09 Thread Ryan Culpepper
I'm not clear on what constraints you're working under with respect to modules, but hopefully you can adapt this to your needs. One option is to use a combination of `define-module-boundary-contract` (or `define/contract`) and `define-match-expander` to bind a name that can be used as a

Re: [racket-users] macros in Racket repository

2021-05-09 Thread Ryan Culpepper
Here are the three most convenient ways I know of to find that information (which is "$RACKET/collects/racket/private/qq-and-or.rkt" in this specific case): If you use DrRacket, then open a file that uses `and`, right-click on an occurrence of `and`, and choose "Open Defining File" (which changes

Re: [racket-users] Tell require where to find C libraries ?

2021-05-07 Thread Ryan Culpepper
Sorry, I did miss those emails. What do you see if you try (require taglib) after starting Racket with logging for "ffi-lib"? For example: $ PLTSTDERR="debug@ffi-lib" racket unrelated logging > (require taglib) ??? If it lists the file you pointed to in your email and says

Re: [racket-users] Tell require where to find C libraries ?

2021-05-07 Thread Ryan Culpepper
It looks like there are two issues. One is the shared library's directory, but the other is that the Racket library is looking for "libtag_c.so.0", and you have "libtag_c.so.3.0". That is, it's looking for a version suffix of "0", not "3.0" (see

Re: [racket-users] Re: Do I need to explicitly enable readline support for the REPL?

2021-03-13 Thread Ryan Culpepper
Yes, since version 6.7 Racket automatically loads xrepl, which automatically loads readline support (or libedit support, if readline-gpl is not installed). Ryan On Sat, Mar 13, 2021 at 8:39 AM Tim Lee wrote: > Is it possible that the documentation is outdated? > > According to >

Re: [racket-users] Parenthesizing infix expressions in Redex renderings?

2021-02-24 Thread Ryan Culpepper
The `binary-rw` function from unstable/gui/redex library has some support for optionally parenthesizing its arguments. Ryan On Wed, Feb 24, 2021 at 11:07 AM David Thrane Christiansen < da...@davidchristiansen.dk> wrote: > Hello all, > > I'm working on coding up a little language model in

Re: [racket-users] How do I, a client, get a copy of an untrusted server certificate?

2021-04-12 Thread Ryan Culpepper
Racket does not provide a way to do that. You can use `openssl s_client -showcerts -connect host:port < /dev/null` to get the server's certificate chain in PEM form (with other logs around it). Of course, an attacker could intercept the connection and send you their CA certificate instead. It

Re: [racket-users] How do I, a client, get a copy of an untrusted server certificate?

2021-04-12 Thread Ryan Culpepper
Yes, that's right. Ryan On Mon, Apr 12, 2021 at 4:23 PM Sage Gerard wrote: > Understood, thank you. By "trusted location," do you mean a server with a > certificate that operating systems already trust? > On 4/12/21 10:15 AM, Ryan Culpepper wrote: > > Racket doe

Re: [racket-users] Obtaining the path of the application program?

2021-08-26 Thread Ryan Culpepper
Usually, if you want to refer to data files etc relative to the current module's file, a good solution is to use `define-runtime-path`. It uses `#%variable-reference` as the basis for its implementation, but adds other features like cooperation with `raco exe` (see docs for `define-runtime-path`

Re: [racket-users] How to set up rackunit tests to test the REPL?

2021-09-09 Thread Ryan Culpepper
This is one of the few (IMO) legitimate uses of `eval`. Your test suite should create a namespace, set it up by requiring your language's module, and then eval interactions expressed as quoted S-expressions or syntax objects. Here's a basic example for testing `match`: #lang racket/base

<    1   2