aboutsummaryrefslogtreecommitdiff
path: root/lux-ruby
diff options
context:
space:
mode:
Diffstat (limited to 'lux-ruby')
-rw-r--r--lux-ruby/project.lux6
-rw-r--r--lux-ruby/source/program.lux234
2 files changed, 120 insertions, 120 deletions
diff --git a/lux-ruby/project.lux b/lux-ruby/project.lux
index 97856704a..de1979660 100644
--- a/lux-ruby/project.lux
+++ b/lux-ruby/project.lux
@@ -1,5 +1,5 @@
[""
- ["identity" ["com.github.luxlang" "lux-ruby" "0.6.4"]
+ ["identity" ["com.github.luxlang" "lux-ruby" "0.6.6-SNAPSHOT"]
"description" "A Ruby compiler for Lux."
"info" ["url" "https://github.com/LuxLang/lux"
"scm" "https://github.com/LuxLang/lux.git"
@@ -15,8 +15,8 @@
"repositories" ["https://oss.sonatype.org/content/repositories/snapshots/"
"https://oss.sonatype.org/service/local/staging/deploy/maven2/"]
- "compiler" ["com.github.luxlang" "lux-jvm" "0.6.4" "jar"]
- "dependencies" [... ["com.github.luxlang" "stdlib" "0.6.4" "tar"]
+ "lux" ["com.github.luxlang" "lux-jvm" "0.6.6-SNAPSHOT" "jar"]
+ "dependencies" [... ["com.github.luxlang" "stdlib" "0.6.6-SNAPSHOT" "tar"]
["org.jruby" "jruby-complete" "9.2.15.0" "jar"]]
diff --git a/lux-ruby/source/program.lux b/lux-ruby/source/program.lux
index 3b8d46737..198faf43b 100644
--- a/lux-ruby/source/program.lux
+++ b/lux-ruby/source/program.lux
@@ -236,8 +236,8 @@
(-> Translator org/jruby/RubyArray (Try Any))
(let [size (.nat (ffi.of_int (org/jruby/RubyArray::getLength host_object)))]
(loop [idx 0
- output (: (Array Any)
- (array.empty size))]
+ output (is (Array Any)
+ (array.empty size))]
(if (n.< size idx)
(case (org/jruby/RubyArray::get (ffi.as_int (.int idx)) host_object)
{.#None}
@@ -265,21 +265,21 @@
[{.#Some tag} ?flag {.#Some value}]
(do try.monad
[value (read value)]
- (in [(: Any (|> tag
- (:as java/lang/Long)
- java/lang/Long::intValue
- (: java/lang/Integer)))
- (: Any
- (case ?flag
- {.#Some _}
- ""
-
- {.#None}
- (: java/lang/Object (ffi.null))))
- (: Any value)]))
+ (in [(is Any (|> tag
+ (as java/lang/Long)
+ java/lang/Long::intValue
+ (is java/lang/Integer)))
+ (is Any
+ (case ?flag
+ {.#Some _}
+ ""
+
+ {.#None}
+ (is java/lang/Object (ffi.null))))
+ (is Any value)]))
_
- (exception.except ..unknown_kind_of_object [(ffi.:as java/lang/Object host_object)])))
+ (exception.except ..unknown_kind_of_object [(ffi.as java/lang/Object host_object)])))
(exception: .public nil_has_no_lux_representation)
@@ -317,7 +317,7 @@
(def: lux_unit
org/jruby/runtime/builtin/IRubyObject
- (<| (ffi.:as org/jruby/runtime/builtin/IRubyObject)
+ (<| (ffi.as org/jruby/runtime/builtin/IRubyObject)
(org/jruby/RubyString::newInternalFromJavaExternal ..initial_ruby_runtime (ffi.as_string ""))))
(def: (wrapped_lux_value useful_object_class lux_structure)
@@ -332,22 +332,22 @@
{.#Some value}
(|> value
<then>
- (ffi.:as org/jruby/runtime/builtin/IRubyObject))
+ (ffi.as org/jruby/runtime/builtin/IRubyObject))
{.#None})]
- [[java/lang/Object] (<| lux_structure (:as (Array java/lang/Object)))]
+ [[java/lang/Object] (<| lux_structure (as (Array java/lang/Object)))]
[java/lang/Boolean (org/jruby/RubyBoolean::newBoolean ..initial_ruby_runtime)]
[java/lang/Long (org/jruby/RubyFixnum::new ..initial_ruby_runtime)]
[java/lang/Double (org/jruby/RubyFloat::new ..initial_ruby_runtime)]
[java/lang/String (org/jruby/RubyString::newInternalFromJavaExternal ..initial_ruby_runtime)]
[org/jruby/runtime/builtin/IRubyObject (<|)]
))
- ... (:as org/jruby/runtime/builtin/IRubyObject value)
- (<| (ffi.:as org/jruby/runtime/builtin/IRubyObject)
+ ... (as org/jruby/runtime/builtin/IRubyObject value)
+ (<| (ffi.as org/jruby/runtime/builtin/IRubyObject)
(org/jruby/java/proxies/JavaProxy::new ..initial_ruby_runtime
- (useful_object_class again (:as (Array java/lang/Object) value))
- (ffi.:as java/lang/Object value)))))))
+ (useful_object_class again (as (Array java/lang/Object) value))
+ (ffi.as java/lang/Object value)))))))
(exception: (invalid_variant_access [field Text])
(exception.report
@@ -377,7 +377,7 @@
org/jruby/RubyClass)
(-> (Array java/lang/Object) org/jruby/runtime/builtin/IRubyObject)
(-> (Array java/lang/Object) org/jruby/internal/runtime/methods/DynamicMethod))
- (<| (ffi.:as org/jruby/internal/runtime/methods/DynamicMethod)
+ (<| (ffi.as org/jruby/internal/runtime/methods/DynamicMethod)
(ffi.object [] org/jruby/internal/runtime/methods/DynamicMethod []
[java/lang/String (ffi.as_string "call")]
@@ -401,43 +401,43 @@
list.indices
(list#each (function (_ index)
(ffi.read! index args)))
- (monad.each ! (|>> (ffi.:as java/lang/Object) ..read)))
+ (monad.each ! (|>> (ffi.as java/lang/Object) ..read)))
output (case args
(pattern (list arg/0))
- (in ((:as (-> Any java/lang/Object) value)
+ (in ((as (-> Any java/lang/Object) value)
arg/0))
(pattern (list arg/0 arg/1))
- (in ((:as (-> Any Any java/lang/Object) value)
+ (in ((as (-> Any Any java/lang/Object) value)
arg/0 arg/1))
(pattern (list arg/0 arg/1 arg/2))
- (in ((:as (-> Any Any Any java/lang/Object) value)
+ (in ((as (-> Any Any Any java/lang/Object) value)
arg/0 arg/1 arg/2))
(pattern (list arg/0 arg/1 arg/2 arg/3))
- (in ((:as (-> Any Any Any Any java/lang/Object) value)
+ (in ((as (-> Any Any Any Any java/lang/Object) value)
arg/0 arg/1 arg/2 arg/3))
(pattern (list arg/0 arg/1 arg/2 arg/3 arg/4))
- (in ((:as (-> Any Any Any Any Any java/lang/Object) value)
+ (in ((as (-> Any Any Any Any Any java/lang/Object) value)
arg/0 arg/1 arg/2 arg/3 arg/4))
(pattern (list arg/0 arg/1 arg/2 arg/3 arg/4 arg/5))
- (in ((:as (-> Any Any Any Any Any Any java/lang/Object) value)
+ (in ((as (-> Any Any Any Any Any Any java/lang/Object) value)
arg/0 arg/1 arg/2 arg/3 arg/4 arg/5))
(pattern (list arg/0 arg/1 arg/2 arg/3 arg/4 arg/5 arg/6))
- (in ((:as (-> Any Any Any Any Any Any Any java/lang/Object) value)
+ (in ((as (-> Any Any Any Any Any Any Any java/lang/Object) value)
arg/0 arg/1 arg/2 arg/3 arg/4 arg/5 arg/6))
(pattern (list arg/0 arg/1 arg/2 arg/3 arg/4 arg/5 arg/6 arg/7))
- (in ((:as (-> Any Any Any Any Any Any Any Any java/lang/Object) value)
+ (in ((as (-> Any Any Any Any Any Any Any Any java/lang/Object) value)
arg/0 arg/1 arg/2 arg/3 arg/4 arg/5 arg/6 arg/7))
_
(exception.except ..invalid_arity [arity]))]
- (in (wrapped_lux_value (:expected useful_object_class) lux_structure output)))))))))
+ (in (wrapped_lux_value (as_expected useful_object_class) lux_structure output)))))))))
(def: (::access useful_object_class lux_structure value)
(-> (-> (-> (Array java/lang/Object) org/jruby/runtime/builtin/IRubyObject)
@@ -445,7 +445,7 @@
org/jruby/RubyClass)
(-> (Array java/lang/Object) org/jruby/runtime/builtin/IRubyObject)
(-> (Array java/lang/Object) org/jruby/internal/runtime/methods/DynamicMethod))
- (<| (ffi.:as org/jruby/internal/runtime/methods/DynamicMethod)
+ (<| (ffi.as org/jruby/internal/runtime/methods/DynamicMethod)
(ffi.object [] org/jruby/internal/runtime/methods/DynamicMethod []
[java/lang/String (ffi.as_string "[]")]
@@ -467,7 +467,7 @@
{.#Some member}
(case (array.read! (.nat (ffi.of_long (org/jruby/RubyFixnum::getLongValue member))) value)
{.#Some value}
- (wrapped_lux_value (:expected useful_object_class) lux_structure value)
+ (wrapped_lux_value (as_expected useful_object_class) lux_structure value)
{.#None}
..ruby_nil)
@@ -480,10 +480,10 @@
(|> value
(array.read! 0)
maybe.trusted
- (:as java/lang/Integer)
+ (as java/lang/Integer)
java/lang/Integer::longValue
(org/jruby/RubyFixnum::new ..initial_ruby_runtime)
- (ffi.:as org/jruby/runtime/builtin/IRubyObject))
+ (ffi.as org/jruby/runtime/builtin/IRubyObject))
(pattern (static runtime.variant_flag_field))
(case (array.read! 1 value)
@@ -496,7 +496,7 @@
(pattern (static runtime.variant_value_field))
(case (array.read! 2 value)
{.#Some value}
- (wrapped_lux_value (:expected useful_object_class) lux_structure value)
+ (wrapped_lux_value (as_expected useful_object_class) lux_structure value)
{.#None}
(panic! (exception.error ..nil_has_no_lux_representation [])))
@@ -515,14 +515,14 @@
(lux_structure (java/util/Arrays::copyOfRange value (ffi.as_int first) (ffi.as_int (i.+ first size)))))
_
- (panic! (exception.error ..invalid_index [(ffi.:as java/lang/Object member)])))
+ (panic! (exception.error ..invalid_index [(ffi.as java/lang/Object member)])))
{.#None})
- (panic! (exception.error ..invalid_index [(ffi.:as java/lang/Object member)]))))))))
+ (panic! (exception.error ..invalid_index [(ffi.as java/lang/Object member)]))))))))
(def: (::= value)
(-> (Array java/lang/Object) org/jruby/internal/runtime/methods/DynamicMethod)
- (<| (ffi.:as org/jruby/internal/runtime/methods/DynamicMethod)
+ (<| (ffi.as org/jruby/internal/runtime/methods/DynamicMethod)
(ffi.object [] org/jruby/internal/runtime/methods/DynamicMethod []
[java/lang/String (ffi.as_string "==")]
@@ -539,22 +539,22 @@
args [org/jruby/runtime/builtin/IRubyObject]
block org/jruby/runtime/Block])
org/jruby/runtime/builtin/IRubyObject
- (<| (ffi.:as org/jruby/runtime/builtin/IRubyObject)
+ (<| (ffi.as org/jruby/runtime/builtin/IRubyObject)
(org/jruby/RubyBoolean::newBoolean ..initial_ruby_runtime)
ffi.as_boolean
(case (|> args
(ffi.read! 0)
- (ffi.:as java/lang/Object)
+ (ffi.as java/lang/Object)
..read)
{try.#Success reference}
- (same? (: Any reference) (: Any value))
+ (same? (is Any reference) (is Any value))
{try.#Failure error}
false))))))
(def: (::length value)
(-> (Array java/lang/Object) org/jruby/internal/runtime/methods/DynamicMethod)
- (<| (ffi.:as org/jruby/internal/runtime/methods/DynamicMethod)
+ (<| (ffi.as org/jruby/internal/runtime/methods/DynamicMethod)
(ffi.object [] org/jruby/internal/runtime/methods/DynamicMethod []
[java/lang/String (ffi.as_string "length")]
@@ -576,11 +576,11 @@
.int
ffi.as_long
(org/jruby/RubyFixnum::new ..initial_ruby_runtime)
- (ffi.:as org/jruby/runtime/builtin/IRubyObject))))))
+ (ffi.as org/jruby/runtime/builtin/IRubyObject))))))
(def: (::to_s value)
(-> (Array java/lang/Object) org/jruby/internal/runtime/methods/DynamicMethod)
- (<| (ffi.:as org/jruby/internal/runtime/methods/DynamicMethod)
+ (<| (ffi.as org/jruby/internal/runtime/methods/DynamicMethod)
(ffi.object [] org/jruby/internal/runtime/methods/DynamicMethod []
[java/lang/String (ffi.as_string "to_s")]
@@ -601,7 +601,7 @@
debug.inspection
ffi.as_string
(org/jruby/RubyString::newInternalFromJavaExternal ..initial_ruby_runtime)
- (ffi.:as org/jruby/runtime/builtin/IRubyObject))))))
+ (ffi.as org/jruby/runtime/builtin/IRubyObject))))))
(exception: (invalid_operation [method Text])
(exception.report
@@ -609,7 +609,7 @@
(def: (::respond_to? value)
(-> (Array java/lang/Object) org/jruby/internal/runtime/methods/DynamicMethod)
- (<| (ffi.:as org/jruby/internal/runtime/methods/DynamicMethod)
+ (<| (ffi.as org/jruby/internal/runtime/methods/DynamicMethod)
(ffi.object [] org/jruby/internal/runtime/methods/DynamicMethod []
[java/lang/String (ffi.as_string "respond_to?")]
@@ -644,7 +644,7 @@
false)
ffi.as_boolean
(org/jruby/RubyBoolean::newBoolean ..initial_ruby_runtime)
- (ffi.:as org/jruby/runtime/builtin/IRubyObject))
+ (ffi.as org/jruby/runtime/builtin/IRubyObject))
{.#None}
(panic! (exception.error ..invalid_operation ["respond_to?"])))))))
@@ -657,7 +657,7 @@
(-> (-> (Array java/lang/Object) org/jruby/runtime/builtin/IRubyObject)
(Array java/lang/Object)
org/jruby/RubyClass)
- (<| (ffi.:as org/jruby/RubyClass)
+ (<| (ffi.as org/jruby/RubyClass)
(ffi.object [] org/jruby/RubyClass []
[org/jruby/Ruby ..initial_ruby_runtime]
@@ -688,10 +688,10 @@
(def: (lux_structure value)
(-> (Array java/lang/Object) org/jruby/runtime/builtin/IRubyObject)
- (<| (ffi.:as org/jruby/runtime/builtin/IRubyObject)
+ (<| (ffi.as org/jruby/runtime/builtin/IRubyObject)
(org/jruby/java/proxies/JavaProxy::new ..initial_ruby_runtime
(useful_object_class lux_structure value)
- (ffi.:as java/lang/Object value))))
+ (ffi.as java/lang/Object value))))
(exception: (cannot_apply_a_non_function [object java/lang/Object])
(exception.report
@@ -699,24 +699,24 @@
(def: macro!
(-> Macro (Maybe org/jruby/RubyProc))
- (|>> (:as java/lang/Object)
+ (|>> (as java/lang/Object)
(ffi.check org/jruby/RubyProc)))
(def: to_host
(-> Any org/jruby/runtime/builtin/IRubyObject)
- (|>> (:as (Array java/lang/Object))
+ (|>> (as (Array java/lang/Object))
..lux_structure))
(def: (call_macro inputs lux macro)
(-> (List Code) Lux org/jruby/RubyProc (Try (Try [Lux (List Code)])))
- (:expected
+ (as_expected
(do try.monad
[expansion (org/jruby/RubyProc::call (!ruby_thread_context)
(|> (ffi.array org/jruby/runtime/builtin/IRubyObject 2)
(ffi.write! 0 (..to_host inputs))
(ffi.write! 1 (..to_host lux)))
macro)]
- (..read (ffi.:as java/lang/Object expansion)))))
+ (..read (ffi.as java/lang/Object expansion)))))
(def: (expander macro inputs lux)
Expander
@@ -725,53 +725,53 @@
(case (call_macro inputs lux macro)
{try.#Success output}
(|> output
- (:as java/lang/Object)
+ (as java/lang/Object)
..read
- (:as (Try (Try [Lux (List Code)]))))
+ (as (Try (Try [Lux (List Code)]))))
{try.#Failure error}
{try.#Failure error})
{.#None}
- (exception.except ..cannot_apply_a_non_function [(:as java/lang/Object macro)])))
+ (exception.except ..cannot_apply_a_non_function [(as java/lang/Object macro)])))
(def: host
(IO (Host _.Expression _.Statement))
- (io (let [run! (: (-> (_.Code Any) (Try Any))
- (function (_ code)
- (do try.monad
- [output (org/jruby/embed/ScriptingContainer::runScriptlet (ffi.as_string (_.code code)) ..interpreter)]
- (..read (maybe.else (:as java/lang/Object [])
- output)))))]
- (: (Host _.Expression _.Statement)
- (implementation
- (def: (evaluate context [_ code])
- (run! code))
-
- (def: execute run!)
-
- (def: (define context custom [_ input])
- (let [global (maybe.else (reference.artifact context)
- custom)
- @global (_.global global)]
- (do try.monad
- [.let [definition (_.set (list @global) input)]
- value (run! definition)]
- (in [global value definition]))))
-
- (def: (ingest context content)
- (|> content
- (# utf8.codec decoded)
- try.trusted
- (:as _.Statement)))
-
- (def: (re_learn context custom content)
- (run! content))
-
- (def: (re_load context custom content)
- (do try.monad
- [_ (run! content)]
- (run! (_.global (reference.artifact context))))))))))
+ (io (let [run! (is (-> (_.Code Any) (Try Any))
+ (function (_ code)
+ (do try.monad
+ [output (org/jruby/embed/ScriptingContainer::runScriptlet (ffi.as_string (_.code code)) ..interpreter)]
+ (..read (maybe.else (as java/lang/Object [])
+ output)))))]
+ (is (Host _.Expression _.Statement)
+ (implementation
+ (def: (evaluate context [_ code])
+ (run! code))
+
+ (def: execute run!)
+
+ (def: (define context custom [_ input])
+ (let [global (maybe.else (reference.artifact context)
+ custom)
+ @global (_.global global)]
+ (do try.monad
+ [.let [definition (_.set (list @global) input)]
+ value (run! definition)]
+ (in [global value definition]))))
+
+ (def: (ingest context content)
+ (|> content
+ (# utf8.codec decoded)
+ try.trusted
+ (as _.Statement)))
+
+ (def: (re_learn context custom content)
+ (run! content))
+
+ (def: (re_load context custom content)
+ (do try.monad
+ [_ (run! content)]
+ (run! (_.global (reference.artifact context))))))))))
(for @.jvm (as_is (exception: .public (invaid_phase_application [partial_application (List Any)
arity (List Any)])
@@ -795,7 +795,7 @@
(def: phase_block_body
org/jruby/runtime/BlockBody
- (<| (ffi.:as org/jruby/runtime/BlockBody)
+ (<| (ffi.as org/jruby/runtime/BlockBody)
(ffi.object [] org/jruby/runtime/BlockBody []
[org/jruby/runtime/Signature ..phase_block_signature]
... Methods
@@ -851,13 +851,13 @@
(do [! try.monad]
[inputs (|> inputs
(array.list {.#None})
- (monad.each ! (|>> (ffi.:as java/lang/Object) ..read)))])
+ (monad.each ! (|>> (ffi.as java/lang/Object) ..read)))])
(case inputs
... It seems that org/jruby/runtime/Block::call can misbehave when getting called with a Lux state value.
(pattern (list info source location current_module modules scopes type_context expected seed scope_type_vars extensions eval host))
(case partial_application
(pattern (list partial/0 partial/1))
- (in (..to_host ((:as (-> Any Any Any Any) phase)
+ (in (..to_host ((as (-> Any Any Any Any) phase)
partial/0
partial/1
[info source location current_module modules scopes type_context expected seed scope_type_vars extensions eval host])))
@@ -866,21 +866,21 @@
(exception.except ..invaid_phase_application [partial_application inputs]))
(pattern (list))
- {try.#Success (<| (ffi.:as org/jruby/runtime/builtin/IRubyObject)
+ {try.#Success (<| (ffi.as org/jruby/runtime/builtin/IRubyObject)
(host_phase partial_application phase))}
(pattern (list input/0))
(case partial_application
(pattern (list))
- (in (<| (ffi.:as org/jruby/runtime/builtin/IRubyObject)
+ (in (<| (ffi.as org/jruby/runtime/builtin/IRubyObject)
(host_phase (list input/0) phase)))
(pattern (list partial/0))
- (in (<| (ffi.:as org/jruby/runtime/builtin/IRubyObject)
+ (in (<| (ffi.as org/jruby/runtime/builtin/IRubyObject)
(host_phase (list partial/0 input/0) phase)))
(pattern (list partial/0 partial/1))
- (in (..to_host ((:as (-> Any Any Any Any) phase)
+ (in (..to_host ((as (-> Any Any Any Any) phase)
partial/0
partial/1
input/0)))
@@ -891,11 +891,11 @@
(pattern (list input/0 input/1))
(case partial_application
(pattern (list))
- (in (<| (ffi.:as org/jruby/runtime/builtin/IRubyObject)
+ (in (<| (ffi.as org/jruby/runtime/builtin/IRubyObject)
(host_phase (list input/0 input/1) phase)))
(pattern (list partial/0))
- (in (..to_host ((:as (-> Any Any Any Any) phase)
+ (in (..to_host ((as (-> Any Any Any Any) phase)
partial/0
input/0
input/1)))
@@ -906,7 +906,7 @@
(pattern (list input/0 input/1 input/2))
(case partial_application
(pattern (list))
- (in (..to_host ((:as (-> Any Any Any Any) phase)
+ (in (..to_host ((as (-> Any Any Any Any) phase)
input/0
input/1
input/2)))
@@ -921,39 +921,39 @@
(def: (extender phase_wrapper)
(-> phase.Wrapper Extender)
... TODO: Stop relying on coercions ASAP.
- (<| (:as Extender)
+ (<| (as Extender)
(function (@self handler))
- (:as Handler)
+ (as Handler)
(function (@self name phase))
- (:as Phase)
+ (as Phase)
(function (@self archive parameters))
- (:as Operation)
+ (as Operation)
(function (@self state))
- (:as Try)
+ (as Try)
try.trusted
- (:as Try)
+ (as Try)
(do try.monad
[handler (try.of_maybe (..macro! handler))
output (org/jruby/RubyProc::call (!ruby_thread_context)
(|> (ffi.array org/jruby/runtime/builtin/IRubyObject 5)
- (ffi.write! 0 (<| (ffi.:as org/jruby/runtime/builtin/IRubyObject)
+ (ffi.write! 0 (<| (ffi.as org/jruby/runtime/builtin/IRubyObject)
(org/jruby/RubyString::newInternalFromJavaExternal (!ruby_runtime) (ffi.as_string name))))
- (ffi.write! 1 (:as org/jruby/runtime/builtin/IRubyObject (phase_wrapper phase)))
+ (ffi.write! 1 (as org/jruby/runtime/builtin/IRubyObject (phase_wrapper phase)))
(ffi.write! 2 (..to_host archive))
(ffi.write! 3 (..to_host parameters))
(ffi.write! 4 (..to_host state)))
handler)]
- (..read (ffi.:as java/lang/Object output))))))
+ (..read (ffi.as java/lang/Object output))))))
@.ruby
(def: (extender phase_wrapper handler)
(-> phase.Wrapper Extender)
- (:expected handler)))
+ (as_expected handler)))
(def: (phase_wrapper archive)
(-> Archive (runtime.Operation phase.Wrapper))
(<| phase#in
- (:as phase.Wrapper)
+ (as phase.Wrapper)
(for @.jvm (..host_phase (list))
@.ruby (|>>))))
@@ -973,7 +973,7 @@
(let [normal_runtime? (_.do "const_defined?"
(list (_.string (_.code _.command_line_arguments)))
{.#None}
- (: _.CVar (_.manual "Object")))]
+ (is _.CVar (_.manual "Object")))]
(_.statement
(_.apply_lambda/* (list (runtime.lux//program_args (_.? normal_runtime?
_.command_line_arguments