Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

compiler: syntactic sugar for combine

Aperta
#1,396 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
35/100
Tipo di issue
Funzionalità
Chiarezza
Da chiarire
Stato di attività
Tranquilla
Stack tecnologico
typescript
Ambito
compilers

Direzione di ricerca

Non viene indicato alcun punto di ingresso per file o test. Inizia esaminando la gestione delle operation expressions del compilatore e l'implementazione esistente di combine, quindi confronta la sintassi pipe proposta con la proposta di pipeline di TC39 collegata. Il lavoro è completato quando si è concordata la sintassi valida, la catena viene compilata in combine e viene definita la restrizione sulle istruzioni di blocco.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

One thing that's very hard to do in job writing is do muliple steps in one.

each is the usual usecase, where I want to do:

each($.data, get, fn, post)

Where what I really want in the each is a little pipeline which processes each item through multiple operations

I can do this today with promises:

each($.data, get.then(fn).then(post))

But it's ugly, the compiler creaks, and error handling isn't great

You can also use combine, which is cool but no-one knows about it:

each($.data, combine(get(), fn(), post()))

I'm just wondering if we can do some syntactic sugar for combine, like:

each($.data, [get, fn, post])

But we probably can't distinguish this piping sort of expression from an array.

What if we used something more like piping?

each($.data, get |> fn |> post)
each($.data, get | fn | post)
each($.data, get > fn > post)
each($.data, @[get,fn , post])

Not terribly neat or intuitive.

using a pipe is OK but the synax isn't reserved, so how would I catch it?

JS does have a proposal for a pipeline operator: https://github.com/tc39/proposal-pipeline-operator

So it's this then:

each($.data, get |> fn |> post)

The compiler detects the chain and compiles it to:

each($.data, combine(get, fn, post))

You cannot use the pipe operator inside a block statement. Use it only in place of an operation.

Lingua principale
TypeScript
Stelle
21
Fork
22
Merge medio
1g 6h
PR unite (30g)
26

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

  • Include un Dockerfile o un file Docker Compose
  • Ha un modello di pull request
  • Nessuna guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di OpenFn/kit

Tutte le issue di OpenFn/kit

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.