And I know it's shameless, but my LIVEditor project also allows you to "navigate to any page you want and start live modifying the it", I just made a 1-minute demo video here: http://youtu.be/t91IoDxo9aY
Light Table 0.4 released
171–180 of 193 posts
Re: Light Table 0.4 released
#172This editor has reached parity with Sublime Text in my workflow for these reasons: 1.) Vim bindings (less impressive accomplishment but necessary for me); 2.) fuzzy matching for files, commands, and settings (this concept really wins); 3.) having a browser as a tab(!, it makes working full screen a joy); 4.) object eval(!); 5.) and EXCELLENT autocomplete -- even in Coffeescript -- most likely a product of the eval st…
* Fuzzy matching doesn't intelligently handle spaces in the search string whereas ST does (very handy for deep directory structure). * No indentation detection or quick switching / conversion between indentation schemes.
I love the work Chris and the team are doing on LT at the moment, it's looking amazing at the moment, and am feverishly awaiting the source release so some of us can chip in and help!
Re: Light Table 0.4 released
#173Earlier quoted context omitted.
Well, since you threw that out there... ...I can't believe that people use Clojure-the-language over CL-the-language. It seems to have no reason to exist except as a "I hate parens" Lisp-1. The interesting parts of Clojure (i.e., the sequence abstraction design) are replicatable in CL as a library. Extant issues (e.g., cl's map not mapping over vectors)* can be abstracted over with other tools. While the JVM interop…
You're dangerously close to trolling, but I'll comment anyway. > a "I hate parens" Lisp-1 Clojure's minimal syntax is, in my opinion, a gigantic improvement over Common Lisp. And I say this as a person who quite likes parens. I feel similarly about Lisp-1s, but that is well trotted territory: Lisp-1s have won. Parens are overloaded in traditional Lisps for both invocation and grouping. The introduction of vectors wit…
Parens are not overloaded in Common Lisp. It's always (function value value ...). And lists are always (). It's an artifact of homoiconicity that the program code can be represented in the same first-class data structures that it manipulates. I think we can all agree that is an advantage.
'()
Is just a reader macro for QUOTE which returns its arguments unevaluated. LIST simply returns a new list from its arguments. BACKQUOTE lets you optionally evaluate parts of a list (which is useful unsurprisingly in macro definitions).Re: seq; I don't really see the advantage. Some defaults might be right for certain applications but I prefer to be in control of making that decision.
ABCL interop is working rather well. They even have CLOS support now.
Parenscript generates great Javascript from Common Lisp code. The great thing about Lisp-like languages is that the evaluator can take a description of a process and create a machine capable of emulating that process. This happens to be really useful when experimenting with new languages. There's even a cl-python project to evaluate Python code in Common Lisp.
The great idea of Common Lisp was to bring together under one standard the forest of incompatible lisp implementations. I'm happy to see experimentation in the lisp space but it seems that fragmentation is only going to happen if everyone runs off into the woods to write their own incompatible lisp over things like syntax.
As for $SOME_HOST interop... a fair bit of the language is an artifact of the JVM. LOOP/RECUR is simply because the JVM is probably never going to support TCO (and while not required by a CL implementation it's nearly universal because it makes for efficient recursive programs... a style of program that is rather natural to lisps). The language doesn't have conditions and restarts because of the JVM (though I've heard it posited that it could be possible to implement them on top of exceptions).
Re: Light Table 0.4 released
#174Earlier quoted context omitted.
Well, since you threw that out there... ...I can't believe that people use Clojure-the-language over CL-the-language. It seems to have no reason to exist except as a "I hate parens" Lisp-1. The interesting parts of Clojure (i.e., the sequence abstraction design) are replicatable in CL as a library. Extant issues (e.g., cl's map not mapping over vectors)* can be abstracted over with other tools. While the JVM interop…
Honestly, I'm far more of a Schemer than a... Clojurite?Clojurist? Clojourneyman? I did try to make the switch to Common Lisp back in 2006, but I wasn't happy and went back to Scheme. Still, I'm far more interested in learning Clojure than giving Common Lisp another try. Here's what makes the difference for me: 1)Library support. With Clojure, it's a five minute import to get Bessel functions. When I asked about how…
Re: Light Table 0.4 released
#175For those of us still stuck in the Dark Ages, I have patched Light Table so it can run on OS X 10.6.8 (Snow Leopard). You can download it here: https://s3-us-west-1.amazonaws.com/lighttable/LightTable0.4....
Re: Light Table 0.4 released
#176Earlier quoted context omitted.
I am fairly sure that Light Table is a node-webkit[1] app, so your assumption should be correct. [1] https://github.com/rogerwang/node-webkit
It is indeed. Chromium + embedded NodeJS written in ClojureScript. FTW.
Re: Light Table 0.4 released
#177Earlier quoted context omitted.
"Parens are overloaded in traditional Lisps for both invocation and grouping." And boy do I wish they were overloaded the same way in Clojure. I hate the fact that I have to say (cond (some-long-predicate involving multipler-parameters) (what-to-do has to go-on-the-next-line because-of wrapping) (here-is-the-next predicate) [(func1 arg1) ...]) It's very easy to end up in this situation (and it's not always just a sig…
I'm not sure how your cond example is related to vector syntax. The decision to use (partition 2 ...) style pairs, rather than extra brackets is orthogonal. The more important point of literal syntax for composites other than lists is the fact that they are resolved at read time. This means you don't need a macro to have grouping. With (some-macro ((f x) (g y))), you need to force expansion inside the parens. Quoting…
Literal syntax for composites other than lists is totally unrelated to this.
I actually really don't understand why if you had (some-macro ((f x) (g y))) you'd have to "force expansion inside the parens", since well-behaved macros won't expand their arguments. You'd iterate through the elements in the parens, but ... that's what you'd do with clojure-style partition macros, too, you'd just call partition first.
For a function call the obvious choice, and one you see in Scheme/Racket quite frequently, is either `(,(f x) ,(g y)) for your second example, or even (list (f x) (g y)). Yeah, then your macro gets a list whose first element is 'list, but ... so what? Your macro probably shouldn't be looking inside what it receives anyway, and if it does then it should be documented that it expects a literal ((foo bar) (baz quux)) or whatever (just as in Clojure you can't write (let (vector 'a 'b) (+ a b)) and have that work).
Re: Light Table 0.4 released
#178This editor has reached parity with Sublime Text in my workflow for these reasons: 1.) Vim bindings (less impressive accomplishment but necessary for me); 2.) fuzzy matching for files, commands, and settings (this concept really wins); 3.) having a browser as a tab(!, it makes working full screen a joy); 4.) object eval(!); 5.) and EXCELLENT autocomplete -- even in Coffeescript -- most likely a product of the eval st…
Re: Light Table 0.4 released
#179Earlier quoted context omitted.
Actually, I'd appreciate expansion on the respect in which Clojure is designed for interop with an arbitrary host. One (relatively uninteresting) respect in which that might be the case is that Clojure-the-language might not say anything about, say, what numeric types there are. Actually it does, though: Clojure supports ... all Java numeric types. And then there are two more Clojure-specific types. Or perhaps that i…
I disagree that Numbers are relatively uninteresting. In fact, I think any language designer would tell you that numerics are one of the hardest areas to get right. It's also the area where Clojure is weakest in terms of interop, I'd say. ClojureScript, for example, only has host Numbers (ie double-precision floating-point) The main thing that Clojure does in terms of being designed for interop is to require the use…
Re: Light Table 0.4 released
#180I really want to improve/make new syntax languages for this and actually use it. Problem is that CodeMirror's docs for it are a tad confusing and I'm not even sure if it will be as flexable as Sublime/textmate .tmLanguage syntaxing. Anyone got a good resource or advice on this? For example, I want to highlight function calls in coffeescript, such as: obj.func '100', () -> Where "func" is highlighted differently. I've…
They are more flexible, but a bit harder to get going with. Basically, you get to implement a full parser, if you want, or just a tokenizer (optionally keeping some minimal state).