Comments (6)
I'm not sure what you mean by "got back a pretty long s-expression". I haven't personally looked at pretty printing in mal. However, I don't think it should be too difficult. You can probably base it on another Lisp pretty printer. I think the main challenge you may run into is that mal currently is very limited in terms of string functions. So for example (count str) works in some implementations (e.g python and ruby at least) due to duck typing but will probably throw an exception in others. But if you get it working in those, then that will be good motivation to get better string support in other implementations. Also, the examples/ directory would be a good place for this once you have it working reasonably well.
from mal.
Any suggestions on places to start looking for existing (and simple) pretty-print implementations?
from mal.
@ktodyruik I added an rudimentary example pprint that support lists, vectors, and maps and scalar types: https://github.com/kanaka/mal/blob/master/examples/pprint.mal If you want to support functions, atoms, etc or intelligent line breaks you'll need to add that yourself but the example should help you get going. E.g. the example breaks every element of sequential data into it's own line. More sophisticated pprint implementations will try and fit sequential collections onto the same line unless their visual representation would be too wide (i.e. most pprint implementations have a max width settings that they try and stay under).
from mal.
@kanaka Thanks!
from mal.
@kanaka I tried running your example. Where is 'seq' implemented?
from mal.
@ktodyruik seq/string? are new functionality that is currently in progress. The branch issue_166_string_ops has implementations of seq and string? for bash, c, clojure, coffeescript, ES6, JavaScript, Haxe, MATLAB, miniMAL, Python, and RPython. Try those. You can follow progress on implementation of seq/string? for other implementations in #166.
from mal.
Related Issues (20)
- Does there exist implementation of emacs written in mal? HOT 1
- Consider merging eval, eval-ast and macroexpand
- Problem Running Tests with Readline Library in C HOT 4
- Newline Escaping HOT 1
- What was used to make the MAL diagram? HOT 1
- what is the minimum requirement for the base language? HOT 1
- Verilog: is there a good reason mal has not been implemented? HOT 1
- VHDL: defmacro! doesn't modify existing functions HOT 1
- make "test^js^step0" fails -- Fatal error in , line 0 -- Check failed: result.second. HOT 1
- PDFs?
- Somebody should solve Rosetta Code challenges with mal
- Mal in Coq? HOT 1
- Apparently in step 3 'env' is a class or structure type, not an object
- Questions on different design from lisp: Mal symbol do not use property lists?
- Lots of unanswered merge requests
- Why is quasiquote so complicated? HOT 3
- What with `` gensym ''
- lexicial versus dynamic
- Floats don't work in the python implementation.
- Is #mal IRC channel still active? people seems tends to use discord now XD
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mal.