freenode/#lisp - IRC Chatlog
Search
8:19:24
shka_
beach: busy with my own stuff, but merskiasa didn't even said what the heck he is doing
9:04:02
p_l
no, no, you see, the symbol had to fit in 36bits, so case is irrelevant but only 6 letters ;)
9:08:36
shrdlu68
TMA: Apparently they had a choice on that one: https://en.wikiquote.org/wiki/Ken_Thompson
9:14:40
merskiasa
<merskiasa> Anyone here able to write an IRC bot like this: http://www.omnimaga.org/computer-projects-and-ideas/haroldbot-%28theorem-prover-solver%29
9:14:48
merskiasa
<merskiasa> The thing has four modes: 1) solve, 2) quantified solve, 3) calculation and 4) prove.
9:14:49
merskiasa
<merskiasa> 1) solve and 4) prove are basically identical, because they differ only in predicate to prove (equality for solve and arbitrary comparison for prove). Prove needs a way to interpret results
9:14:49
merskiasa
<merskiasa> I know how to formulate problem in CNF/BDD form. I also know how to use SAT solver. I haven't implemented interpretation of unsatisfability results.
9:42:05
shka_
it is rather messy and if i would have more time i would write my own (with thread safety and perhaps even parallel unification built in) but it should be enough for you
9:56:21
shka_
when i attempt to load with quicklisp (which just calls asdf i think) it won't load because of unkown class
9:58:07
lieven
yeah the last sentence of LOCALLY says: If a locally form is a top level form, the body forms are also processed as top level forms.
10:00:30
lieven
defclass is used as an example in the ISSUE about locally and I see no reason why it shouldn't work
10:23:28
p_l
hmm, is there a list somewhere of what is included in Allegro Free Edition and what isn't?
14:30:34
beach
BepBep: Choice 1: Write your entire application in Common Lisp. Choice 2 (if you already have an application written in some static language): Use ECL.
14:32:20
Xach
I have a long-running interest in exposing cl-js as a scripting system for a Common Lisp application
14:35:25
BepBep
beach: I'm looking to run one-liners in the shell mostly. Do you think that's do-able with any implementations?
14:35:59
shka_
only issue i see is that it is difficult to sandbox lisp code in existing implementations
14:38:14
beach
BepBep: Oh, so you don't mean adding a dynamic language to an existing application written in some static language? In that case, I have no advice for you. Maybe someone else knows more. But again, this is a Common Lisp channel, so you will get biased answers.
14:39:31
BepBep
beach: all my static applications are already written in Common Lisp. I'd just script it with it like a sane person if that were the case.
15:11:38
dlowe
It's a fuzzy term, and my definition is obviously not authoritative, but it seems to cover most of the de facto uses
15:11:50
beach
I thought it meant "a user adding functionality to an existing application through the use of some dynamic language"
15:12:37
dlowe
well, if you are performing actions with this dynamic language that a user could perform through the ui, that's scripting
15:12:55
dlowe
if you are adding capabilities that are not available through the ui, that's usually called a plugin
15:16:45
jmercouris
but basically people just use it as a way to allow users to extend an application
15:17:04
beach
The way I have seen "plugin" used is for modules that are written in the same (static) language as the main language of the application, but that are compiled and then loaded through some dynamic-linking mechanism. I guess I need to get my terminology right, or at least clear.
15:17:29
jmercouris
It's not that you need to get your terminology right, it is rather that there is no terminology
15:18:02
jmercouris
the problem is when people start to say stuff like "javascript is a scripting language"
15:19:09
jmercouris
yeah, I think best to avoid these terms, as they mean many things to different people
15:21:18
beach
True. But when I give a talk to industry, there is little feedback, so it is best to be clear.
15:21:22
Fare
I argued at some previous ELS that the important part of "scripting language" was "low overhead computing".
15:21:25
dlowe
a "scripting language" is a language that is good for, or often used to, simulate a user's actions
15:21:54
Fare
i.e. with minimal overhead (e.g. #!/usr/bin/cl ) you can write code that will run and do what you want.
15:22:02
dlowe
clearly there's transition between doing things to 10 things and doing things to 1,000,000
16:51:16
p_l
beach: well, environment that is accessible... For LispM the equivalent would be to write some utility functions and (on symbolics only) a Command Processor applet
17:10:56
aeth
I think a lot of people think that there are two kinds of languages, "systems languages" and "scripting languages", and that there is a clear line between the languages, even though these terms describe roles not languages. For instance, CL can do both. And this division makes it unclear where to place languages like Java and C#. And, of course, Wikipedia lists 5 different kinds of "scripting". https://en.wikipedia.org/wiki/Scripting_langua
17:14:17
aeth
Imo, the only reason some general purpose languages are called "scripting languages" is because their current implementations are too slow. You can obviously use any general purpose language for anything, but performance requirements might restrict your choices.
17:14:43
aeth
makomo: And, yes, I was as vague as possible but the more you add to it (and it's often things like you said), the less accurate it is.
17:15:28
aeth
Or they'll talk about the interpreted vs. compiled benefits and drawbacks and literally all of the benefits of "interpreted" would also apply to SBCL, which is AOT compiled.
17:16:01
TMA
there are several layers of meaning to 'scripting language'. without a proper clarification the term is almost but not quite useless
17:16:15
aeth
dlowe: Okay, you're right about that. And another one that doesn't apply to SBCL is "sandboxing".
17:16:28
aeth
dlowe: But if it's a list of 20 only those 2 won't apply to SBCL and thus are actually inherent of interpreters.
17:33:40
Bike
but it has a few holes as far as sandboxing goes. that's not what beach came up with them for.
17:35:42
jmercouris
makomo: surely you recognize teh difference between an interpreter and a compiler right?
17:37:02
scymtym
Fare: speaking of cl-launch (hours ago, admittedly), could you clarify the license? (see https://gitlab.common-lisp.net/xcvb/cl-launch/issues/6 )
17:37:39
shka_
Bike: well, being able to actually use SICL as your lisp implementation would be cool
17:37:47
pjb
dlowe: it's not because it's an interpreter that: 1- the language is easy to understand and program with, 2- the system provides you with a REPL and a good interactive debugger.
17:37:58
makomo
because somehow for them, a compiler between two languages, of which neither is machine code, is not a real compiler
17:38:01
aeth
makomo: "transpiler" is shorter than "source-to-source compiler" and everyone still knows what you mean
17:39:31
jmercouris
I think the distinction here is that a transpiler is not intended to produce machine code
17:39:44
pjb
makomo: Once you have an implementation of a language, (be it a compiler or an interpreter or anything else), you have a machine for that language, so programs written in that language are machine code (for that "virtual" machine).
17:39:52
jmercouris
whereas a compiler is usually intended, or at least connotated with producing machine code
17:40:51
makomo
true, but that's how the terminology becomes fuzzy, because people use "compiler" and "interpreter" to mean a lot of things
17:41:02
pjb
the abstraction is the T forms for compilers, the V forms for machines and the I form for interpreters.
17:41:53
makomo
but formally, the processor is an interpreter for machine code, although it's implemented in hardware
17:42:23
aeth
makomo: Because over time interpreters look more like compilers and compilers look more like interpreters. Just like any other division in languages. Although some divisions are going away faster, like static vs. dynamic typing.
17:43:12
makomo
the difference between the two is fine, but the meaning of "interpreter" itself is fuzzy
17:43:29
makomo
people call main python program an interpreter, even though it does the exact same thing as java
17:45:34
makomo
i also think of it as an interpreter, because it reads the java bytecode and "executes" it
17:45:41
aeth
jmercouris: There is only one meaningful distinction in programming language design. "blub" and "Lisp"
17:46:15
makomo
i always wondered about the Blub thing, how do we know, as lispers, that lisp isn't just another blub that we can't see past :D
17:46:58
aeth
dlowe: Obviously the point was that Common Lisp is yet another blub and Arc is the way forward.
17:47:22
jmercouris
I believe we should be programming in assembly, it places no limits on the programmer
17:48:06
dlowe
I had that idea and it turns out that assemblers are actually annoyingly large and complicated.
17:54:10
aeth
I think the biggest confusion in language categorization is probably dynamic vs. static typing. e.g. CL is not dynamically typed. Some implementations might be. SBCL is gradually typed, but afaik most of the error-catching benefits of static types stay within one file.
17:57:25
pjb
You cannot really say lisp is dynamically typed, opposing that with static typing, because this is not the most meaningful distinction of the lisp type system.
17:57:51
pjb
What lisp does, is to assign types to values, instead of assigning it to variables like it's done in "statically" typed languages.
17:59:28
Bike
the type system does a bunch of different things that don't always cohere together. values being typed instead of variables is a pretty good start though.
17:59:30
aeth
In SBCL if you use type declarations, it does static type checking within one file or compilation unit. It then also does dynamic, runtime type checking on those type declarations unless (safety 0)
17:59:49
pjb
When you have values lost in memory, in lisp, they still have their type. The garbage collector can find them, and call their finaliser function. But in usual C implementations, if there's no variable to refer to the value, then the value is just bits, without a type, and nothing can be done with them.
18:00:53
aeth
At the very least, if you view it as dynamic xor static typing, SBCL does blur the lines, and other languages are finally catching up there, too
18:03:01
pjb
I would just say that there are compilation-time analysis, local or global analysis, and there are run-time ("JIT") statistics and checks, and that you can use both to optimize the processing.
18:19:52
aeth
Lisp has a different view of compilation time than most compilers. (eval-when (:compile-toplevel) (uiop:launch-program "ksudoku"))
18:38:50
pjb
Write a lisp program using midi to generate this static: https://www.youtube.com/watch?v=hgll-XTqcS4