# Summary of piping/chaining proposal?

**URL:** <https://discourse.julialang.org/t/summary-of-piping-chaining-proposal/91442>\
**Category:** Internals & Design\
**Created:** [December 8, 2022, 7:48pm UTC](https://discourse.julialang.org/t/summary-of-piping-chaining-proposal/91442 "2022-12-08T19:48:39Z")\
**Posts on this page:** 4\
**Page:** 2

<div class="post-metadata">

**Author:** ![fonsp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fonsp/32/222349_2.png) [@fonsp](https://discourse.julialang.org/u/fonsp)\
**Post date:** [July 1, 2024, 8:49am UTC](https://discourse.julialang.org/t/summary-of-piping-chaining-proposal/91442/21 "2024-07-01T08:49:30Z")

</div>

Hey, super interesting! Can we read more about this proposal for macro traits somewhere?

At Pluto we [once](https://github.com/fonsp/Pluto.jl/pull/407/files) worked on a big list of “dummy macros” that emulate the behaviour of popular macros so that they could be analysed statically. In the end we went for a full [dynamic analyser](https://github.com/fonsp/Pluto.jl/pull/1032), but I think this static dummy system would help a lot of beginners using popular packages in LS editors like vscode.

---

<div class="post-metadata">

**Author:** ![mrufsvold](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mrufsvold/32/31600_2.png) [@mrufsvold](https://discourse.julialang.org/u/mrufsvold)\
**Post date:** [July 1, 2024, 1:40pm UTC](https://discourse.julialang.org/t/summary-of-piping-chaining-proposal/91442/22 "2024-07-01T13:40:27Z")

</div>

I didn’t make a formal proposal – just spit balling in another Discourse thread. I’ll try to track it down! But my basic idea was some mechanism to tell VSCode/LanguageServer that it’s safe to run `@macroexpand` on certain macros when analyzing some code.

That could be done by:

1. At call site, with a special comment (like Python’s `# ignore type` for silencing type hint warnings)
2. A menu for selecting expandable macros in the VSCode sidebar, similar to the menu for selecting compiled symbols in the debugger.
3. Using Preferences.jl or some other configuration format to keep a list of macros along side the code in the directory’s files.

Alternatively, it could be the job the macro implementor to define something like `LanguageServer.is_pure_macro(::Type{MyMacro}) = true` in an extension, but I like the idea of allowing the user to toggle this behavior. Also, a static analyzer wouldn’t have `MyMacro` rendered as a type but as a symbol. So that complicates the story for macro implementors setting a trait.

---

<div class="post-metadata">

**Author:** ![ShalokShalom](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/shalokshalom/32/52462_2.png) [@ShalokShalom](https://discourse.julialang.org/u/ShalokShalom)\
**Post date:** [August 13, 2024, 9:46pm UTC](https://discourse.julialang.org/t/summary-of-piping-chaining-proposal/91442/23 "2024-08-13T21:46:01Z")

</div>

Can VSCode’s Notebook extension do that?

This could be a way, to bridge that.

> **[GitHub - microsoft/vscode-jupyter: VS Code Jupyter extension](https://github.com/microsoft/vscode-jupyter)**
>
> VS Code Jupyter extension

---

<div class="post-metadata">

**Author:** ![mrufsvold](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mrufsvold/32/31600_2.png) [@mrufsvold](https://discourse.julialang.org/u/mrufsvold)\
**Post date:** [August 13, 2024, 10:04pm UTC](https://discourse.julialang.org/t/summary-of-piping-chaining-proposal/91442/24 "2024-08-13T22:04:26Z")

</div>

I’m not much of a Jupyter user, so I really couldn’t say!

[Previous page](https://discourse.julialang.org/t/summary-of-piping-chaining-proposal/91442.md?page=1)
