Ski: Difference between revisions

42 bytes added ,  16 October 2018
no edit summary
(Created page with "'''Ski''' is a fullstack programming language for web apps I'm working on, inspired heavily by Prolog and Elixir, with a few cool things yanked from Clojure and Python. Prolo...")
 
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
'''Ski''' is a fullstack programming language for web apps I'm working on, inspired heavily by Prolog and Elixir, with a few cool things yanked from Clojure and Python.
'''Ski''' is a fullstack programming language for web apps I'm working on, inspired heavily by Prolog and Elixir, with a few cool things yanked from Clojure and Python.


Prolog's idiosyncratic syntax is actually a really cool thing-- the language is homoiconic, new infix operators can be defined by the user, and it supports pretty seamless macroexpansion; however all these nice features come at a cost. It's impossible to nest expressions without explicitly calling `call`, there's no convenient syntax for a series of operations besides creating a ton of unnecessary variables like in Erlang, and there's no way to differentiate between a compound term (like a list) and something that should be callable like a predicate. Prolog's built in `callable/1` is useless.
Prolog's idiosyncratic syntax is actually a really cool thing-- the language is homoiconic, new infix operators can be defined by the user, and it supports pretty seamless macroexpansion; however all these nice features come at a cost. It's impossible to nest expressions without explicitly calling <code>call</code>, there's no convenient syntax for a series of operations besides creating a ton of unnecessary variables like in Erlang, and there's no way to differentiate between a compound term (like a list) and something that should be callable like a predicate. Prolog's built in <code>callable/1</code> is useless.


So Ski is my reinvention of Prolog that basically gets rid of functors and compound terms, and evaluates recursively like almost every other language. Sounds crazy, but the regular user never needs to do a bunch of code manipulation; Python gets along fine without it, and it's a great language.
So Ski is my reinvention of Prolog that basically gets rid of functors and compound terms, and evaluates recursively like almost every other language. Sounds crazy, but the regular user never needs to do a bunch of code manipulation; Python gets along fine without it, and it's a great language.
Line 9: Line 9:
# A compiler from Ski to SWI-Prolog.
# A compiler from Ski to SWI-Prolog.
# A compiler from Ski to Tau Prolog. Shouldn't really be that much different.
# A compiler from Ski to Tau Prolog. Shouldn't really be that much different.
# The official website. Currently http://lang.ski redirects here.
# The official website, implemented in Ski. Currently http://lang.ski redirects here.
# Package manager. I'm eager to see how a logic language can tackle the goal of dependency management.
# Package manager. I'm eager to see how a logic language can tackle the goal of dependency management.
# Pine, a frontend framework similar to Elm.
# Pine, a frontend framework similar to Elm.