Create an executable for a program in an interpreted language: Difference between revisions

Content added Content deleted
m (Use debian standard install location for J)
(Created Nim solution.)
Line 402: Line 402:


Variations and further details are given in the [https://github.com/stedolan/jq/wiki/FAQq%20FAQ jq FAQ].
Variations and further details are given in the [https://github.com/stedolan/jq/wiki/FAQq%20FAQ jq FAQ].

=={{header|Nim}}==
Nim is normally a compiled language which can produce either native code using C, C++ or Objective C as intermediate language, or a JavaScript program. It is not a language designed to be interpreted, but there exists a powerful subset named Nimscript which is interpretable.

So we have chosen to write a Nim program which launch the “nim” program to evaluate a Nimscript program. There are two ways to ask “nim” to interpret: either using the “e” command rather than the “c” command or using the “--eval” option.

<syntaxhighlight lang="Nim"># Using the "e" command.

import std/os

const TempFile = "/tmp/hello.nim"
const Program = """echo "Hello World!""""

# Write program into temporary file.
let outFile = open(TempFile, fmWrite)
outFile.writeLine Program
outFile.close()

# Lauch "nim" to execute the program.
# "--hints:off" suppresses the hint messages.
discard execShellCmd("nim e --hints:off " & TempFile)

# Remove temporary file.
removeFile(TempFile)
</syntaxhighlight>

<syntaxhighlight lang="Nim"># Using the '--eval" option.

import std/[os, strutils]

const Program = """echo "Hello World!""""

# As the program is provided in the command line, there is no need
# to create a temporary file.

# Lauch "nim" to execute the program.
# "--hints:off" suppresses the hint messages.
discard execShellCmd("""nim --hints:off --eval:'$#'""" % Program)
</syntaxhighlight>

{{out}}
<pre>Hello World!</pre>


=={{header|Phix}}==
=={{header|Phix}}==