TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Show HN: Leporello.js – interactive functional programming IDE for JavaScript

107 点作者 dmitry-vsl超过 1 年前
Hi! Leporello.js is an interactive functional programming environment designed for pure functional subset of JavaScript. It executes code instantly as you type and displays results next to it. Leporello.js also features an omnipresent debugger. Just position your cursor on any line or select any expression, and immediately see its value. Leporello.js visualizes a dynamic call tree of your program. Thanks to the data immutability in functional programming, it allows you to navigate the call tree both forward and backward, offering a time-travel-like experience. Leporello.js offers the ability to develop HTML5 applications interactively, enabling you to update your code without losing the application&#x27;s state.<p>It records an IO trace of your program, which is then transparently replayed during subsequent program executions. This allows you to instantly reexecute your code after making small tweaks, thereby tightening your feedback loop.<p>Furthermore, Leporello.js can serve as an interactive notebook. You have the flexibility to utilize any JavaScript libraries to visualize your data directly within your code.<p>For a more detailed walkthrough, please watch the product video. Currently, Leporello.js is available as a free online application that you can try right in your browser. My goal is to build the Leporello.js standalone Electron app and a VSCode plugin, both with TypeScript support. Additionally, I plan to add Node.js support (currently, Leporello.js is only for HTML5 apps). In the VSCode plugin, Leporello.js will sit on top of the built-in TypeScript&#x2F;JavaScript mode, utilizing its code analysis information to enhance the default VSCode experience with unique Leporello.js features.<p>I am building Leporello.js as a single independent developer. Leporello.js is funded solely by donations. Support me on Github Sponsors [0] and be the first to gain access to the Leporello.js Visual Studio Code plugin with TypeScript support.<p>I&#x27;ll be delighted to answer any questions you may have.<p>[0] <a href="https:&#x2F;&#x2F;github.com&#x2F;sponsors&#x2F;leporello-js">https:&#x2F;&#x2F;github.com&#x2F;sponsors&#x2F;leporello-js</a>

13 条评论

skrebbel超过 1 年前
Wow this looks pretty spectacular. At first I was annoyed that I had to play a video to get it, but I then had to admit that there’s no real way to convey this so well with text.<p>That VS Code plugin sounds particularly amazing. How do you plan to scope things? Notably how would I avoid it accidentally re-running side effects?
评论 #37756419 未加载
FractalHQ超过 1 年前
This looks awesome. Any plans to support Typescript? I can’t stomach vanilla JavaScript these days.<p>Edit: that vscode extension with typescript support actually seems perfect for me!
sethcalebweeks超过 1 年前
The term &quot;self-hosted&quot; is an interesting choice. It&#x27;s usually used to describe the compiler of a programming language written in that same programming language. This is an IDE written in JavaScript. Cool project, though!
ithkuil超过 1 年前
Something like this but for jsonnet could definitely help people grokking how jsonnet works.<p>I do believe that jsonnet (despite all it&#x27;s real problems) is an underestimated jewel mostly because of the embryonic level of its tooling. An ide&#x2F;debugger like this could help.<p>EDIT: some tangentially related work: <a href="https:&#x2F;&#x2F;github.com&#x2F;kubecfg&#x2F;ursonnet">https:&#x2F;&#x2F;github.com&#x2F;kubecfg&#x2F;ursonnet</a>
评论 #37758546 未加载
Byamarro超过 1 年前
Incredible, it&#x27;s like having perfectly typed language without having to use types at all. Few worries from my side:<p>- TypeScript gained traction partially because you could migrate an existing codebase to it. Does leporello support gradual migration from style that&#x27;s not aligned with leporello to the supported subset? That is, how leporello handles a codebase that&#x27;s partially written in freestyle JS and not the subset that leporello specify handles?<p>- How does it deal with patterns from popular frameworks or libraries that are borderline frameworks. React, Vue, Express, NestJS etc.<p>- It feels like leporello has to store a lot of possible branch-outs of the state. How would it handle frameworks code in this case? React on its own probably has a lot of branch-outs inside. Would it devour my RAM?
评论 #37771314 未加载
评论 #37771132 未加载
BobJS超过 1 年前
Are you using the monaco editor? If so please enable the autoClosingBrackets:<p>```js<p>monaco.editor.create(document.getElementById(&#x27;container&#x27;), {<p><pre><code> value: &#x27;const myVar = hello&#x27;, language: &#x27;javascript&#x27;, autoClosingBrackets: &#x27;always&#x27; &#x2F;&#x2F; &lt;--- This </code></pre> });<p>```<p>When I highlight &quot;hello world&quot; and press &#x27;, I want to see &quot;&#x27;hello world&#x27;&quot; instead of &quot;&#x27;&quot;<p>All that aside, awesome project
评论 #37757781 未加载
artisin超过 1 年前
I dig the core concept, particularly since I&#x27;ve been searching for a more efficient alternative to opening a blank DevTools window for executing various helper scripts. With that in mind, what about introducing a &quot;Loose Mode&quot; option of sorts, akin to a basic js interpreter? Granted, most of the tool&#x27;s interactive functionalities probably wouldn&#x27;t work in this simplified mode, but it would, in turn, expand the tool&#x27;s overall versatility. Enabling you to use previously written scripts and&#x2F;or experiment with code (such as copying an example snippet from the README) without having to first adapt it to a functional paradigm.
评论 #37757027 未加载
gmerc超过 1 年前
It looks amazing. That said the lack of a license is something you may want to address.
p2hari超过 1 年前
Really awesome , would love to see typescript support.
metadat超过 1 年前
OP: Bug report- With Brave on Android the &quot;try it&quot; demo constantly zooms way, way in, making this unusable on mobile.
zubairq超过 1 年前
I played around with it for a bit and love some of the concepts. Is the tool aiming to be a business or a passion project?
评论 #37760833 未加载
ericol超过 1 年前
This looks seriously awesome. Favorited it for later.<p>As a side note who &#x2F; what narrates the video? ;)
评论 #37756709 未加载
评论 #37758193 未加载
thriftwy超过 1 年前
Здравствуйте, Дмитрий Евгеньевич!