gwl-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Comments on process template syntax


From: Ricardo Wurmus
Subject: Re: Comments on process template syntax
Date: Mon, 03 Feb 2020 15:33:24 +0100
User-agent: mu4e 1.2.0; emacs 26.3

Roel Janssen <address@hidden> writes:

> May I suggest one other thing?  Maybe I don't grasp Wisp at all, but
> why not:
>
>   process: list-file-template (filename)
>     name …
>     inputs …
>     outputs …
>
>   process: list-some-file.txt
>     inputs some-file.txt
>     outputs …

I don’t see how this differs from what I suggested… other than the
renaming of “process:” to “process”.

Let’s ignore the name of that macro and go with “process:”.  Currently,
you’d write it as

  process: (list-file-template filename)
    name …
    inputs …
    outputs …

or for the concrete case:

  process: list-some-file.txt
    inputs "some-file.txt"
    outputs …

There’s little here that’s Wisp specific.  It translates to this Scheme
code:

  (process: (list-file-template filename)
    (name …)
    (inputs …)
    (outputs …))

and

  (process: list-some-file.txt
    (inputs "some-file.txt")
    (outputs …))

The macro “process:” just expands these things to

  (define-public (list-file-template filename)
    (process
      (name …)
      (inputs …)
      (outputs …)))

and

  (define-public list-some-file.txt
    (process
      (name "list-some-file.txt")
      (inputs "some-file.txt")
      (outputs …)))

[[
Now, “process” is actually a macro that performs a few more convenient
transformations, such as wrapping inputs in a list and all that, and it
then creates an instance of the GOOPS class <process> by doing

    (make <process> …)

where “…” stands for sanitized arguments.  Not important for this
discussion, though.
]]

I’m proposing two things:

1) get rid of the “:” in the macro name because it could be confused for
syntax — both for the Wisp “:” that means “wrap this in parens” and for
SRFI-88 style keywords.  Rename the lower level “process” and “workflow”
macros — those that are wrappers around “(make <process> …)” and “(make
<workflow> …)” — to “make-process” and “make-workflow”, respectively, to
avoid naming conflicts.

2) move the procedure name outside of the parentheses when using the
“process” (formerly “process:”) macro.

This means that the examples above would be written as

  process list-file-template (filename)
    name …
    inputs …
    outputs …

and

  process list-some-file.txt
    inputs "some-file.txt"
    outputs …

It’s a pretty small change, but I think it reduces the potential for
confusion and removes unnecessary characters (the colon).

--
Ricardo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]