Interactive programming (repl): Difference between revisions

m
→‎{{header|Wren}}: Version change.
m (→‎{{header|Wren}}: Version change.)
 
(41 intermediate revisions by 21 users not shown)
Line 74:
ACL2 !>(good-bye)
</pre>
 
=={{header|Arturo}}==
<pre>➜ $ arturo
In Arturo's REPL:
<lang arturo>$ :001> f: @(a b sep) -> a + 2*sep + b
= <function>
$ :002> f "Rosetta" "Code" ":"
= "Rosetta::Code"</lang>
 
Arturo
=={{header|AWK}}==
(c) 2019-2021 Yanis Zafirópulos
<lang AWK>
 
# syntax: GAWK -f CON GNU
# v/0.9.6.5 b/1097 @ 2021-02-09T16:40:43+01:00
# syntax: TAWK Thompson Automation
# arch: amd64/macosx
</lang>
 
<p>Command, program, output:</p>
# Type info 'symbol for info about a specific symbol or built-in function
<pre>
# Type help to get a list of all available functions with a short description
GAWK -f CON
# For multi-line input, just add a blank space at the end of a line
BEGIN {
 
x = f("Rosetta","Code",":")
# Launching interactive console - rock on! 🤘
print(x)
 
}
$> f: function [x y sep]-> x ++ (repeat sep 2) ++ y
function f(s1,s2,s3) { return(s1 s3 s3 s2) }
 
^Z <-- CTRL-Z
$> f "Rosetta" "Code" "::Code"
=> Rosetta::Code
</pre>
 
<p>Command (followed by welcome banner), program, output:</p>
$></pre>
TAWK
TAWK Version 5.0c (for Windows/NT)
Copyright 1996 Thompson Automation, Inc. All Rights Reserved.
Enter AWK Program followed by a blank line:
BEGIN {
x = f("Rosetta","Code",":")
print(x)
}
function f(s1,s2,s3) { return(s1 s3 s3 s2) }
<-- blank line
Enter program arguments, if any:
<-- blank line
Rosetta::Code
</pre>
 
=={{header|BASIC}}==
Line 120 ⟶ 101:
 
A Basic interpreter is in command mode by default. Enter the following in command mode:
<langsyntaxhighlight lang="qbasic">10 DEF FN f$(a$, b$, s$) = a$+s$+s$+b$
PRINT FN f$("Rosetta", "Code", ":")</langsyntaxhighlight>
 
==={{header|Applesoft BASIC}}===
The Apple II comes with BASIC in Read Only Memory (ROM.) When the Apple II plus and later models are powered on with no disk drives attached, the Applesoft BASIC prompt appears.
<pre>
]
</pre>
If a drive is attached, press RESET or Ctrl+RESET before the disk boots to get to the Applesoft BASIC prompt.
 
The original Apple II comes with Integer BASIC in ROM.
<pre>
>
</pre>
With an Applesoft ROM card, or a 16K RAM "Language" card in slot 0, you can boot from the DOS 3.3 System Master to load DOS and if needed it will load Applesoft into the Language card. Type the DOS 3.3 command FP "Floating Point" to get to the Applesoft BASIC prompt. There is also an older cassette tape version of Applesoft BASIC.
 
You can also get to Applesoft Basic from the Monitor.
<pre>
*
</pre>
Type E000G to cold start Applesoft which clears the program and variables. Or, type E003G to warm start Applesoft.
 
The two modes are RUN mode, and the default "DIRECT" mode. In direct mode, spaces are ignored except within strings. Entering ? is shorthand for the PRINT keyword. Using GET, INPUT, or DEF FN will result in an ?ILLEGAL DIRECT ERROR. The DATA statement is ignored.
<syntaxhighlight lang="gwbasic">] 0 IF F$ = "F" THEN RESULT$ = P1$ + P3$ + P3$ + P2$: END
 
] F$ = "F":P1$ = "ROSETTA":P2$ = "CODE":P3$ = ":": GOTO
 
] ?RESULT$
ROSETTA::CODE</syntaxhighlight>
=={{header|Batch File}}==
CMD.EXE is the CLI for Batch Files. Batch Files do not have traditional functions and doing the [http://rosettacode.org/wiki/Call_a_function#Batch_File alternative] will not work in interactive mode. So this example uses blocks of code.
{{trans|BBC BASIC}}
<langsyntaxhighlight lang="dos">>set r=Rosetta
 
>set c=Code
Line 135 ⟶ 142:
Rosetta::Code
 
></langsyntaxhighlight>
 
=={{header|BBC BASIC}}==
Line 193 ⟶ 200:
'''&raquo;quit'''
$
 
=={{header|BQN}}==
 
All BQN implementations start in interactive mode, when called from the command line with no arguments (using Node.js for [[mlochbaum/BQN]]). It is recommended to use <code>rlwrap</code> with the executable for a better REPL experience.
<syntaxhighlight lang="bqn"> Join ← {a 𝕊 b‿c: b∾a∾a∾c}
(function block)
":" Join "Rosetta"‿"Code"
"Rosetta::Code"</syntaxhighlight>
 
=={{header|Bracmat}}==
Line 220 ⟶ 235:
 
=={{header|Brat}}==
<langsyntaxhighlight lang="brat">$ brat
# Interactive Brat
brat:1> f = { a, b, s | a + s + s + b }
Line 227 ⟶ 242:
#=> Rosetta::Code
brat:3> quit
Exiting</langsyntaxhighlight>
 
=={{header|Burlesque}}==
 
<langsyntaxhighlight lang="burlesque">
C:\Burlesque>Burlesque.exe --shell
blsq ) {+]?+}hd"Rosetta""Code"':!a
"Rosetta:Code"
blsq )
</syntaxhighlight>
</lang>
 
=={{header|C sharp}}==
Line 280 ⟶ 295:
=={{header|Clojure}}==
With ''clojure.jar'' on the Java classpath, the Clojure REPL is invoked with ''java clojure.main''.
<langsyntaxhighlight lang="lisp">
Clojure 1.1.0
user=> (defn f [s1 s2 sep] (str s1 sep sep s2))
Line 287 ⟶ 302:
"Rosetta::Code"
user=>
</syntaxhighlight>
</lang>
 
=={{header|CoffeeScript}}==
With the [https://www.npmjs.com/package/coffee-script coffee-script] package for [https://www.npmjs.org/ NPM] on [http://nodejs.org/ Node.js]. The ''-n'' flag is '--node'.
<syntaxhighlight lang="coffeescript">
<lang CoffeeScript>
$ coffee -n
coffee> f = (a, b, c) -> a + c + c + b
Line 297 ⟶ 312:
coffee> f "Rosetta", "Code", ":"
"Rosetta::Code"
</syntaxhighlight>
</lang>
 
=={{header|Common Lisp}}==
 
The details of interactive use vary widely between implementations; this example is from [[SBCL]]. <code>*</code> is the prompt. By default, SBCL compiles (not interprets) all code, unless <code>[http://www.sbcl.org/manual/Interpreter.html sb-ext:*evaluator-mode*]</code> is changed.
<langsyntaxhighlight lang="lisp">$ rlwrap sbcl
This is SBCL 1.0.25, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.
Line 313 ⟶ 328:
 
"Rosetta::Code"
*</langsyntaxhighlight>
 
=={{header|Déjà Vu}}==
Line 319 ⟶ 334:
The interactive interpreter provides <code>.</code> as a shortcut for <code>!.</code> and <code>;</code> as a shortcut for <code>!(print-stack)</code>.
 
<langsyntaxhighlight lang="dejavu">$ vu
<1:1> f str1 str2 sep:
<1:2> join sep [ str2 "" str1 ]
<1:3>
<2:1> . f "Rosetta" "Code" ":"
"Rosetta::Code"</langsyntaxhighlight>
 
=={{header|E}}==
 
<langsyntaxhighlight lang="e">$ rune # from an OS shell. On Windows there is also a desktop shortcut.</langsyntaxhighlight>
 
"<code>?</code>" and "<code>&gt;</code>" are prompts for input; "<code>#</code>" marks output.
 
<langsyntaxhighlight lang="e">? def f(string1 :String, string2 :String, separator :String) {
> return separator.rjoin(string1, "", string2)
> }
Line 338 ⟶ 353:
 
? f("Rosetta", "Code", ":")
# value: "Rosetta::Code"</langsyntaxhighlight>
 
If you type a definitely incomplete expression, such as "<code>def f() {</code>", then it gives an "<code>&gt;</code>" prompt and takes additional lines. If the expression is not necessarily incomplete, you can continue anyway by ending a line with "<code>\</code>".
Line 344 ⟶ 359:
=={{header|EchoLisp}}==
EchoLisp runs in a browser window, and is -par essence - interactive. To start the REPL mode, type http://www.echolalie.org/echolisp in the browser URL address field.
<langsyntaxhighlight lang="scheme">
;; screen copy of the REPL
;; note that the &i variables remember expression evaluation, and may be used in other expressions
Line 364 ⟶ 379:
 
;; etc.
</syntaxhighlight>
</lang>
 
=={{header|Elena}}==
ELENA Script is a subset of the general language. ELT (Virtual machine terminal) can work in REPL mode
<langsyntaxhighlight lang="elena">
c:\Alex\ELENA\bin>elt-cli
ELENA command line VM terminal 56.10.137 (C)20112021-202023 by AlexeiAleksey Rakov
ELENA VM 56.10.1725 (C)20052022-20202023 by AlexAleksey Rakov
Initializing...
-q - quit
Done...
-c - clear
-h - help
-l <path> - execute a script from file
-p<script>; - prepend the prefix code
{ <script>; }*
<script> - execute script
 
>f-pf(s1,s2,sep){^ s1 + sep + sep + s2 };
 
>f("Rosetta","Code",":")
Rosetta::Code
>
</syntaxhighlight>
</lang>
 
=={{header|Elixir}}==
Elixir's Interactive REPL is IEx, Interactive Elixir. To open IEx, open a shell and type: iex<br>
The 'def' keyword isn't allowed outside of modules in Elixir, so the easiest way to write a function in iex is usually by writing an anonymous function.
<langsyntaxhighlight Elixirlang="elixir">iex(1)> f = fn str1,str2,sep -> [str1,"",str2] |> Enum.join(sep) end # Join list on separator
iex(2)> g = fn str1,str2,sep -> str1 <> sep <> sep <> str2 end # Or concatenate strings
 
Line 391 ⟶ 412:
...(3)> def f(str1,str2,sep), do: [str1,"",str2] |> Enum.join(sep)
...(3)> def g(str1,str2,sep), do: str1 <> sep <> sep <> str2
...(3)> end</langsyntaxhighlight>
 
'''Example:'''
<langsyntaxhighlight Elixirlang="elixir">iex(4)> f.("Rosetta","Code",":")
"Rosetta::Code"
iex(5)> JoinStrings.f("Rosetta","Code",":")
"Rosetta::Code"</langsyntaxhighlight>
 
=={{header|Emacs Lisp}}==
Line 404 ⟶ 425:
Switch to the buffer (<code>C-x b *scratch*</code>, or use the Buffers menu), type some Lisp expressions, and press <code>C-j</code> after each expression.
 
<langsyntaxhighlight lang="lisp">(defun my-join (str1 str2 sep)
(concat str1 sep sep str2))
my-join
(my-join "Rosetta" "Code" ":")
"Rosetta::Code"</langsyntaxhighlight>
 
Emacs also provides ''ielm'', the interactive Emacs Lisp mode. Start it with <code>M-x ielm</code>, type some expressions and press <code>RET</code>.
 
<langsyntaxhighlight lang="lisp">*** Welcome to IELM *** Type (describe-mode) for help.
ELISP> (defun my-join (str1 str2 sep)
(concat str1 sep sep str2))
Line 418 ⟶ 439:
ELISP> (my-join "Rosetta" "Code" ":")
"Rosetta::Code"
ELISP> </langsyntaxhighlight>
 
=={{header|Erlang}}==
<langsyntaxhighlight lang="erlang">$erl
1> F = fun(X,Y,Z) -> string:concat(string:concat(X,Z),string:concat(Z,Y)) end.
#Fun<erl_eval.18.105910772>
2> F("Rosetta", "Code", ":").
"Rosetta::Code"
</syntaxhighlight>
</lang>
 
=={{header|ERRE}}==
Line 447 ⟶ 468:
=={{header|F_Sharp|F#}}==
The F# interpreter is called '''fsi'''. As F# accepts multi-line input it will not evaluate the input until you enter two semi-colons together.
<langsyntaxhighlight lang="fsharp">Microsoft F# Interactive, (c) Microsoft Corporation, All Rights Reserved
F# Version 1.9.6.2, compiling for .NET Framework Version v2.0.50727
 
Line 458 ⟶ 479:
 
> f "Rosetta" "Code" ":" ;;
val it : string = "Rosetta::Code"</langsyntaxhighlight>
 
=={{header|Factor}}==
Factor comes with a graphical interpreter called the listener. The listener can also be run in a console with the following command:
./factor -run=listener
<langsyntaxhighlight lang="factor">( scratchpad ) : cool-func ( w1 w2 sep -- res ) dup append glue ;
( scratchpad ) "Rosetta" "Code" ":" cool-func .
"Rosetta::Code"</langsyntaxhighlight>
 
=={{header|Fantom}}==
Line 484 ⟶ 505:
 
All Forth systems come with an interpreter. On embedded systems, the interpreter functions as a monitor or lightweight operating system.
<langsyntaxhighlight lang="forth">$ gforth
Gforth 0.7.0, Copyright (C) 1995-2008 Free Software Foundation, Inc.
Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
Line 497 ⟶ 518:
ok
s" :" s" Code" s" Rosetta" f cr type
Rosetta::Code ok</langsyntaxhighlight>
 
=={{header|FreeBASIC}}==
Line 507 ⟶ 528:
For example, the current task can be coded as follows and compiles/runs instantly :
 
<langsyntaxhighlight lang="freebasic">' FB 1.05.0 Win64
 
Dim As String s1, s2, sep
Line 514 ⟶ 535:
Input "Separator "; sep
Print : Print s1 + sep + sep + s2
Sleep</langsyntaxhighlight>
 
{{out}}
Line 528 ⟶ 549:
Frink is distributed as a single <CODE>.jar</CODE> file that will run in a Java Virtual Machine. On many operating systems, just double-clicking this <CODE>.jar</CODE> file will run Frink with a graphical interface in an interactive mode. By specifying a different main-class (<CODE>frink.parser.Frink</CODE>) when starting Frink, it can be run in a text-mode interactive mode as well. These options and sample starter scripts for various operating systems are provided in the [https://frinklang.org/#RunningFrink Running Frink] section of the documentation.
 
<langsyntaxhighlight lang="frink">$ java -cp frink.jar frink.parser.Frink
 
f[a,b,s] := "$a$s$s$b"
f["Rosetta", "Code", ":"]</langsyntaxhighlight>
 
{{out}}
Line 537 ⟶ 558:
Rosetta::Code
</pre>
 
=={{header|Fōrmulæ}}==
 
The interactive mode (REPL) is the primary working mode in Fōrmulæ.
 
To use it, open the web address [https://formulae.org/ formulae.org] in your browser. it is preferable to use this environment in a desktop web browser.
 
It is not necessary to install anything else.
 
A page with information is shown. You can start a new script using the [[File:Fōrmulæ - Interactive programming 05.png|border]] tool (new document).
 
[[File:Fōrmulæ - Interactive programming 04.png|border]]
 
=={{header|GAP}}==
<langsyntaxhighlight lang="gap">~% gap
######### ###### ########### ###
Line 577 ⟶ 610:
gap> join("Rosetta", "Code", ":");
"Rosetta::Code"
gap></langsyntaxhighlight>
 
=={{header|Go}}==
Line 585 ⟶ 618:
 
The complete program satisfying the task is,
<langsyntaxhighlight lang="go">package main
 
import "fmt"
Line 595 ⟶ 628:
func main() {
fmt.Println(f("Rosetta", "Code", ":"))
}</langsyntaxhighlight>
 
It works well to enter the program, check "every keystroke" to see syntax errors from whatever silly oversights you made, then fix them one by one until your desired output appears.
Line 604 ⟶ 637:
=={{header|Groovy}}==
The '''groovysh''' interpreter requires a command-line interpreter (terminal) environment in which to run. This example was run under the CMD command-line interpreter on Microsoft Windows XP.
<langsyntaxhighlight lang="groovy">C:\Apps\groovy>groovysh
Groovy Shell (1.6.2, JVM: 1.6.0_13)
Type 'help' or '\h' for help.
Line 615 ⟶ 648:
groovy:000> exit
 
C:\Apps\groovy></langsyntaxhighlight>
 
=={{header|Haskell}}==
Line 621 ⟶ 654:
The details of interactive use vary widely between implementations. This example is from [[GHC|GHCi]].
 
<langsyntaxhighlight lang="haskell">$ ghci
___ ___ _
/ _ \ /\ /\/ __(_)
Line 631 ⟶ 664:
Prelude> let f as bs sep = as ++ sep ++ sep ++ bs
Prelude> f "Rosetta" "Code" ":"
"Rosetta::Code"</langsyntaxhighlight>
 
=={{header|HicEst}}==
Line 637 ⟶ 670:
"c:\Program Files\HicEst\HicEst.exe E:\Rosetta\Interactive_programming.hic f('Rosetta', 'Code', ':')"
<br>Type the following script. Each line is executed (and incrementally compiled) when it is typed:
<langsyntaxhighlight HicEstlang="hicest">CHARACTER A*40, B*40, C*40
 
READ(Text=$CMD_LINE, Format="'','','',") A, B, C
WRITE(ClipBoard, Name) A, B, C ! A=Rosetta; B=Code; C=:;
 
WRITE(ClipBoard) TRIM(A) // ':' // TRIM(C) // TRIM(B) ! Rosetta::Code</langsyntaxhighlight>
 
=={{headerHeader|HuginnInsitux}}==
 
[[File:huginn_interactive.gif]]
First is the system shell, when Insitux has been already been installed system-wide (<code>npm i -g insitux</code>).
 
<pre>
$ npx ix
Insitux 230728 REPL
❯ (function f s1 s2 sep (str s1 sep sep s2))
❯ (f "Rosetta" "Code" ":")
Rosetta::Code
</pre>
 
=={{header|Io}}==
Line 669 ⟶ 712:
 
This is a session log once the os specific stuff has been handled:
<langsyntaxhighlight lang="j"> f=: [: ; 0 2 2 1&{
f 'Rosetta';'Code';':'
Rosetta::Code</langsyntaxhighlight>
 
=={{header|Java}}==
 
<langsyntaxhighlight lang="java">
public static void main(String[] args) {
System.out.println(concat("Rosetta", "Code", ":"));
Line 685 ⟶ 728:
 
Rosetta::Code
</syntaxhighlight>
</lang>
Alternatively
<syntaxhighlight lang="java">
Java has an interactive REPL (Read-Evaluate-Print-Loop) console, jshell, that is included with the JDK.
The REPL is started by invoking: $JAVA_HOME/bin/jshell
Here is a sample session to accomplish the task.
| Welcome to JShell -- Version 20
| For an introduction type: /help
 
jshell> String concat(String a, String b, String c) { return a + c + c + b; }
| created method concat(String, String, String)
jshell> concat("Rosetta", "Code", ":")
$2 ==> "Rosetta::Code"
jshell>
</syntaxhighlight>
 
=={{header|JavaScript}}==
{{works with|Rhino}}
<langsyntaxhighlight lang="javascript">$ java -cp js.jar org.mozilla.javascript.tools.shell.Main
Rhino 1.7 release 2 2009 03 22
js> function f(a,b,s) {return a + s + s + b;}
Line 695 ⟶ 755:
Rosetta::Code
js> quit()
$</langsyntaxhighlight>
 
=={{header|Jsish}}==
Line 734 ⟶ 794:
=={{header|K}}==
{{works with|Kona}}
<langsyntaxhighlight lang="k">$ rlwrap k
K Console - Enter \ for help
f:{x,z,z,y}
f["Rosetta";"Code";":"]
"Rosetta::Code"</langsyntaxhighlight>
 
=={{header|Kotlin}}==
Kotlin has an interactive shell for the JVM which can be started by simply typing 'kotlinc' at the command line. Here's a sample interactive session to accomplish the specified task on Windows 10:
<langsyntaxhighlight lang="scala">c:\kotlin-compiler-1.0.6>kotlinc
Welcome to Kotlin version 1.0.6-release-127 (JRE 1.8.0_31-b13)
Type :help for help, :quit for quit
Line 748 ⟶ 808:
>>> f("Rosetta", "Code", ":")
Rosetta::Code
>>> :quit</langsyntaxhighlight>
 
=={{header|Lambdatalk}}==
Lambdatalk works in a small wiki, lambdatank. Evaluation is done in real time.
<syntaxhighlight lang="scheme">
{def F {lambda {:a :b :s} :a:s:s:b}}
-> F
 
{F Rosetta Code :}
-> Rosetta::Code
</syntaxhighlight>
 
=={{header|Lang}}==
This example works with the LangShell from the Standard Lang implementation.
The LangShell can be started with (The LangShell does not run in the OS's shell, it will open a separate window):
<syntaxhighlight lang="shell">
$ lang -startShell
</syntaxhighlight>
<syntaxhighlight lang="lang">
Lang-Shell - Press CTRL + C for cancelling execution or for exiting!
• Copy with (CTRL + SHIFT + C) and paste with (CTRL + SHIT + V)
• Press CTRL + S for saving all inputs to a .lang file (Save)
• Press CTRL + SHIFT + S for saving all inputs to a .lang file (Save As...)
• Press CTRL + I for opening the special char input window
• Press CTRL + SHIFT + F for opening a file chooser to insert file paths
• Press UP and DOWN for scrolling through the history
• Press TAB and SHIFT + TAB for scrolling trough auto complete texts
◦ Press ENTER for accepting the auto complete text
• Press CTRL + L to clear the screen
• Use func.printHelp() to get information about LangShell functions
> fp.f = ($a, $b, $s) -> return $a$s$s$b
==> <Normal FP>
> fp.f(Rosetta, Code, :)
==> Rosetta::Code
>
</syntaxhighlight>
Example with auto print mode set to NONE:
<syntaxhighlight lang="lang">
Lang-Shell - Press CTRL + C for cancelling execution or for exiting!
• Copy with (CTRL + SHIFT + C) and paste with (CTRL + SHIT + V)
• Press CTRL + S for saving all inputs to a .lang file (Save)
• Press CTRL + SHIFT + S for saving all inputs to a .lang file (Save As...)
• Press CTRL + I for opening the special char input window
• Press CTRL + SHIFT + F for opening a file chooser to insert file paths
• Press UP and DOWN for scrolling through the history
• Press TAB and SHIFT + TAB for scrolling trough auto complete texts
◦ Press ENTER for accepting the auto complete text
• Press CTRL + L to clear the screen
• Use func.printHelp() to get information about LangShell functions
> fn.setAutoPrintMode(NONE)
> fp.f = ($a, $b, $s) -> return $a$s$s$b
> fn.println(fp.f(Rosetta, Code, :))
Rosetta::Code
>
</syntaxhighlight>
 
=={{header|Lasso}}==
<langsyntaxhighlight Lassolang="lasso">#!/usr/bin/lasso9
 
// filename: interactive_demo
Line 793 ⟶ 907:
 
// deliver the result
stdoutnl(concatenate_with_delimiter(#string1, #string2, #delimiter))</langsyntaxhighlight>
 
Called from the command line: ./interactive_demo
 
Result -> Rosetta::Code
 
=={{header|Lambdatalk}}==
Lambdatalk works in a small wiki, lambdatank. Evaluation is done in real time.
<lang scheme>
{def F {lambda {:a :b :s} :a:s:s:b}}
-> F
 
{F Rosetta Code :}
-> Rosetta::Code
</lang>
 
=={{header|Lingo}}==
Lingo/Director is usually started as GUI program and has no access to the standard system console (unless using a binary plugin). But it has its own interactive Lingo console called "Message Window", that can be activated/displayed by executing "_player.debugPlaybackEnabled=1". Using this Message Window, the task can be solved like this:
<langsyntaxhighlight lang="lingo">> m=new(#script)
> m.scripttext="on conc(a,b,c)"&RETURN&"return a&c&c&b"&RETURN&"end"
> put conc("Rosetta", "Code", ":")
-- "Rosetta::Code"</langsyntaxhighlight>
 
=={{header|Logo}}==
{{works with|UCB Logo}}
<langsyntaxhighlight lang="logo">$ <i>logo</i>
Welcome to Berkeley Logo version 5.6
? <i>to f :prefix :suffix :separator</i>
Line 826 ⟶ 930:
? <i>show f "Rosetta "Code ":</i>
Rosetta::Code
?</langsyntaxhighlight>
 
=={{header|Lua}}==
<langsyntaxhighlight lang="lua">$ lua
Lua 5.1.2 Copyright (C) 1994-2007 Lua.org, PUC-Rio
> function conc(a, b, c)
Line 836 ⟶ 940:
> print(conc("Rosetta", "Code", ":"))
Rosetta::Code
></langsyntaxhighlight>
 
=={{header|M2000 Interpreter}}==
Line 852 ⟶ 956:
</pre >
(we see Function F$() at the header of editor)
<syntaxhighlight lang="m2000 interpreter">
<lang M2000 Interpreter>
Read name1$, name2$, sep$
=name1$+sep$+sep$+name2$
</syntaxhighlight>
</lang>
So now we press Esc and return to command line (editor open as a layer, so console has the last state). Using Clipboard we sen unicode string to clipboard
<pre >
Line 881 ⟶ 985:
=={{header|M4}}==
Here is a terminal session with output lines marked by "==>":
<langsyntaxhighlight M4lang="m4">$ m4
define(`f',`$1`'$3`'$3`'$2')
==>
f(`Rosetta',`Code',`:')
==>Rosetta::Code
m4exit</langsyntaxhighlight>
 
=={{header|Maple}}==
Line 892 ⟶ 996:
<pre>$ maple</pre>
Then enter the Maple commands.
<langsyntaxhighlight Maplelang="maple">f := (a,b,c)->cat(a,c,c,b):
 
f("Rosetta","Code",":");</langsyntaxhighlight>
Output:
<pre> "Rosetta::Code"</pre>
 
=={{header|Mathematica}} / {{header|Wolfram Language}}==
<syntaxhighlight lang Mathematica="mathematica">$ math</langsyntaxhighlight>
<langsyntaxhighlight Mathematicalang="mathematica">f[x_,y_,z_]:=Print[x,z,z,y]
->""
f["Rosetta","Code",":"]
->Rosetta::Code</langsyntaxhighlight>
 
=={{header|MATLAB}} / {{header|Octave}}==
Line 909 ⟶ 1,013:
 
Define an anonymous function in the Command Window
<syntaxhighlight lang="matlab">
<lang Matlab>
>> f = @(str1, str2, delim) [str1, delim, delim, str2];
</syntaxhighlight>
</lang>
 
Call of function and {{out}}
Line 926 ⟶ 1,030:
Simply run wxMaxima, xMaxima (or simply maxima in a Linux or Windows command line) to start a REPL.
 
<langsyntaxhighlight lang="maxima">(%i1) f(a, b, c) := sconcat(a, c, c, b)$
(%i2) f("Rosetta", "Code", ":");
(%o2) "Rosetta::Code"</langsyntaxhighlight>
 
=={{header|min}}==
Run the REPL with <code>min -i</code>, otherwise it'll expect a file to run as a script.
{{works with|min|0.27.1}}
<syntaxhighlight lang="min">$ (dup suffix swap suffix suffix) :glue
$ "Rosetta" "Code" ":" glue puts!
Rosetta::Code
$</syntaxhighlight>
 
=={{header|ML/I}}==
Line 934 ⟶ 1,046:
Start ML/I with (e.g.: $ ml1), then type:
 
<langsyntaxhighlight MLlang="ml/Ii">MCSKIP MT,<>
MCINS %.
MCDEF F WITHS (,,)
AS <%WA1.%WA3.%WA2.%WA2.></langsyntaxhighlight>
 
=={{header|Nanoquery}}==
Line 949 ⟶ 1,061:
 
=={{header|Nim}}==
Nim is not provided with a REPL but there is several available. Online, it is possible to use Nim playground at https://play.nim-lang.org/. And one can install “inim” with “nimble” (command <code>nimble install inim</code>).
Use <code>nimble</code> (Nim's package manager) to install a REPL ('''nrpl''' or '''tnim''')
 
Run the REPL and paste the following code:
 
<syntaxhighlight lang="nim">proc f(x, y, z: string) = echo x, z, z, y
<pre>
f("Rosetta", "Code", ":")</syntaxhighlight>
proc f(x, y, z: string) = echo x & z & z & y
f("Rosetta", "Code", ":")
</pre>
 
which outputs:
 
<pre>Rosetta::Code</pre>
 
{{works with|Nim|0.20.0 or above}}
To get working arrow keys, compile nim with readline, like this: <code>./koch boot -d:release -d:useGnuReadline</code> or just run <code>rlwrap nim i</code> instead.
Since version 0.20.0 Nim also provides a REPL in its compiler API.
 
'''File: repl.nim'''
<syntaxhighlight lang="nim">import ../compiler/[nimeval, llstream]
 
runRepl(llStreamOpenStdIn().repl, [findNimStdLibCompileTime()], true)</syntaxhighlight>
'''Usage'''
<pre>nim c repl.nim
repl
.....>>> var a = 1
>>> var b = 2
>>> a + b
 
3</pre>
 
=={{header|OCaml}}==
Line 968 ⟶ 1,092:
The default interactive interpreter is called the toplevel. In the toplevel because we can enter expressions that span multiple lines, we have to type the double semicolon (";;") at the end of an expression so that it knows we are done.
 
<langsyntaxhighlight lang="ocaml">$ ocaml
Objective Caml version 3.12.1
 
Line 975 ⟶ 1,099:
# f "Rosetta" "Code" ":";;
- : string = "Rosetta::Code"
#</langsyntaxhighlight>
 
Also a lot of OCaml users invoke the toplevel with rlwrap or ledit to gain readline capabilities:
 
<syntaxhighlight lang ="ocaml">$ rlwrap ocaml</langsyntaxhighlight>
 
There is also [http://benediktmeurer.de/ocamlnat/ ocamlnat] that is a native toplevel. It permits interactive use of the OCaml system through a read-eval-print loop, similar to the standard OCaml toplevel, but up to 100 times faster.<BR>
Line 985 ⟶ 1,109:
 
=={{header|Octave}}==
<langsyntaxhighlight lang="octave">$ octave
GNU Octave, version 3.0.2
Copyright (C) 2008 John W. Eaton and others.
Line 1,009 ⟶ 1,133:
octave:2> concat("Rosetta","Code",":");
Rosetta::Code
octave:3></langsyntaxhighlight>
 
=={{header|Oforth}}==
Line 1,015 ⟶ 1,139:
Oforth interpreter is started using --i command line parameter :
 
<langsyntaxhighlight Oforthlang="oforth">oforth --i</langsyntaxhighlight>
 
Into the interpreter, you can create functions :
 
<langsyntaxhighlight Oforthlang="oforth">: x(a, b, sep) a sep + sep + b + ;
ok
>x("Rosetta", "Code", ":")
Line 1,026 ⟶ 1,150:
[1] (String) Rosetta::Code
ok
></langsyntaxhighlight>
 
Alternatively you don't need the local variables
 
<langsyntaxhighlight Oforthlang="oforth"> > : x dup rot + + + ;
ok
> "Rosetta" "Code" ";" x .s
[1] (String) Rosetta::Code
ok
> </langsyntaxhighlight>
 
=={{header|Ol}}==
Ol comes with builtin REPL. Interactive web-based example can be found at the Ol [https://yuriy-chumak.github.io/ol project page].
 
<langsyntaxhighlight lang="scheme">
$ ol
Welcome to Otus Lisp 2.1-2282-27a9b6c
type ',help' to help, ',quit' to end session.
> (define (f head tail mid)
(fold string-append "" (list head mid mid tail)))
;; Defined f
> (f "Rosetta" "Code" ":")
Line 1,051 ⟶ 1,175:
> ,quit
bye-bye :/
</syntaxhighlight>
</lang>
 
=={{header|ooRexx}}==
Line 1,114 ⟶ 1,238:
Mozart supports this style of programming with its Emacs interface.
Go to the "Oz" buffer and enter
<langsyntaxhighlight lang="oz">declare fun {F As Bs Sep} {Append As Sep|Sep|Bs} end</langsyntaxhighlight>
Press C-. C-l to evaluate the line.
 
Now enter
<langsyntaxhighlight lang="oz">{System.showInfo {F "Rosetta" "Code" &:}}</langsyntaxhighlight>
and again press C-. C-l to execute the code.
You will see the result in the "*Oz Emulator*" buffer.
Line 1,125 ⟶ 1,249:
gp *is* a REPL built on the PARI library. You can start it from the command line with <code>gp</code>, though you may wish to change to your Pari directory first so it can read your <code>.gprc</code> file. Alternatively, if you are using a GUI, double-click the shortcut.
 
<langsyntaxhighlight lang="parigp">f(s1,s2,sep)=Str(s1, sep, sep, s2);</langsyntaxhighlight>
 
=={{header|Perl}}==
Perl doesn't have an interpreter, but there is an interactive debugger:
<langsyntaxhighlight lang="perl">$ perl -de1
 
Loading DB routines from perl5db.pl version 1.3
Line 1,141 ⟶ 1,265:
DB<2> p f('Rosetta', 'Code', ':')
Rosetta::Code
DB<3> q</langsyntaxhighlight>
 
Alternative way:
 
<langsyntaxhighlight lang="perl">$ perl
# Write the script here and press Ctrl+D plus ENTER when finished (^D means Ctrl+D):
sub f {my ($s1, $s2, $sep) = @_; $s1 . $sep . $sep . $s2};
Line 1,151 ⟶ 1,275:
^D
Rosetta::Code
$</langsyntaxhighlight>
 
Another:
 
<langsyntaxhighlight lang="perl">$ perl -lpe '$_=eval||$@'
sub f { join '' => @_[0, 2, 2, 1] }
 
f qw/Rosetta Code :/
Rosetta::Code</langsyntaxhighlight>
 
=={{header|Phix}}==
The repl has been significantly improved for version 0.8.4+ so it is now usable, although not thoroughly tested or widely used yet.
{{todo|Phix|Loads of stuff!}}
There is a barely adequate repl: Phix compiles/optimises things (even when "interpreting"), such as omitting
unused routines/code and unnecessary tests (usually via type inference), and generally assumes it can mangle
the symtab as part of generating executable machine code. It does not, therefore, fare very well (as yet) if
and when it is asked to compile "a few more lines" of code. Theoretically, however, it is just a relatively
simple matter of figuring out precisely what to save/restore and at exactly which points, and avoiding some
of the optimisations (/type inferences) when in repl mode.
 
<pre>
C:\Program Files (x86)\Phix>p -repl
Line 1,175 ⟶ 1,292:
Enter a statement such as "?remainder(floor(250/8),8)" or "puts(1,"Hi")"
 
>function f(string a,b,c) return a&c&c&b end function ?f("Rosetta","Code",":")
"Rosetta::Code"
Warning: the repl is brand new, experimental, incomplete, and liable to crash!
Enter a statement such as "?remainder(floor(250/8),8)" or "puts(1,"Hi")"
 
>?f("Rosetta","Code",":")
"Rosetta::Code"
 
>quit
?f("Rosetta","Code",":")
C:\Program Files (x86)\Phix>
^ undefined identifier f
 
Press Enter, or d for diagnostics...
</pre>
 
As you can see, it all-too-quickly "forgots" f, or rather does not save/restore the right things.<br>
=={{header|Picat}}==
Each time I come back to this, I usually make significant (but still small) headway, before getting stuck(/bored) yet again.
<code>cl</code> enters the interactive console mode. Exit with <code>Ctrl-d</code> on Unix and <code>Ctrl-z</code> on Windows.
<pre>Picat> cl
f(X,Y,Sep) = X ++ [Sep,Sep] ++ Y.
<Ctrl-D>
Picat> print(f("Rosetta","Code",':'))
Rosetta::Code
yes</pre>
 
=={{header|PicoLisp}}==
<syntaxhighlight lang ="bash">$ pil +</langsyntaxhighlight>
<langsyntaxhighlight PicoLisplang="picolisp">: (de f (Str1 Str2 Sep)
(pack Str1 Sep Sep Str2) )
-> f
 
: (f "Rosetta" "Code" ":")
-> "Rosetta::Code"</langsyntaxhighlight>
 
=={{header|Pike}}==
<langsyntaxhighlight lang="pike">$ pike
Pike v7.8 release 352 running Hilfe v3.5 (Incremental Pike Frontend)
> string f(string first, string second, string sep){
Line 1,207 ⟶ 1,327:
> f("Rosetta","Code",":");
(1) Result: "Rosetta::Code"
></langsyntaxhighlight>
 
=={{header|PowerShell}}==
PowerShell itself is already a shell and therefore an interactive environment is the default.
<langsyntaxhighlight lang="powershell">Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.
 
Line 1,220 ⟶ 1,340:
PS Home:\> f 'Rosetta' 'Code' ':'
Rosetta::Code
PS Home:\></langsyntaxhighlight>
 
=={{header|Prolog}}==
Line 1,226 ⟶ 1,346:
Prolog works in its own environnment.<BR>
Start the interpreter by typing pl at the command line (or by clicking on the exe).
<langsyntaxhighlight Prologlang="prolog">% library(win_menu) compiled into win_menu 0.00 sec, 12,872 bytes
% library(swi_hooks) compiled into pce_swi_hooks 0.00 sec, 2,404 bytes
% The graphical front-end will be used for subsequent tracing
Line 1,247 ⟶ 1,367:
 
3 ?-
</syntaxhighlight>
</lang>
 
=={{header|Python}}==
Start the interpreter by typing python at the command line (or select it from a menu). You get a response showing the version of the interpreter being run before giving an input prompt of three greater-than characters and a space:
 
<langsyntaxhighlight lang="python">python
Python 2.6.1 (r261:67517, Dec 4 2008, 16:51:00) [MSC v.1500 32 bit (Intel)] on
win32
Line 1,261 ⟶ 1,381:
>>> f('Rosetta', 'Code', ':')
'Rosetta::Code'
>>></langsyntaxhighlight>
 
=={{header|Quackery}}==
 
The Quackery shell (REPL) can be invoked from the command line by invoking <code>quackery</code> without specifying a Quackery source file. The shell can be invoked from within a Quackery source file with the Quackery word <code>shell</code>. As the shell is nestable it can also be invoked from within the shell.
 
{{out}}
Invoking the shell first from the command line and then within the shell, and leaving first the nested shell then the outer shell.
 
<pre> > quackery
 
Welcome to Quackery.
 
Enter "leave" to leave the shell.
 
/O> say " now entering a nested shell..."
... shell
...
now entering a nested shell...
/O> say " now leaving the nested shell"
... leave
...
now leaving the nested shell
Auf wiedersehen.
 
 
Stack empty.
 
/O> say " now leaving the shell invoked at the command line"
... leave
...
now leaving the shell invoked at the command line
Goodbye.
 
 
> echo " back at the command line"
back at the command line
></pre>
 
The task:
 
<syntaxhighlight lang="quackery">$ quackery
 
Welcome to Quackery.
 
Enter "leave" to leave the shell.
 
/O> [ dup join swap join join ] is f ( [ [ [ --> [ )
...
 
Stack empty.
 
/O> $ 'Rosetta' $ 'Code' $ ':' f
...
 
Stack: [ 82 111 115 101 116 116 97 58 58 67 111 100 101 ]
 
/O> echo$
...
Rosetta::Code
Stack empty.
 
/O></syntaxhighlight>
 
=={{header|R}}==
<langsyntaxhighlight lang="r">$ R
 
R version 2.7.2 (2008-08-25)
Line 1,288 ⟶ 1,470:
[1] "Rosetta::Code"
> q()
Save workspace image? [y/n/c]: n</langsyntaxhighlight>
 
=={{header|Racket}}==
Line 1,294 ⟶ 1,476:
Much like Scheme, Racket features a full-featured REPL:
 
<langsyntaxhighlight Racketlang="racket">oiseau:/tmp> racket
Welcome to Racket v5.3.3.5.
> (define (f string-1 string-2 separator)
Line 1,301 ⟶ 1,483:
"Rosetta::Code"
> ^D
oiseau:/tmp></langsyntaxhighlight>
 
=={{header|Raku}}==
(formerly Perl 6)
Using [[Rakudo]].
<syntaxhighlight lang="raku" perl6line>$ rakudo/perl6
> sub f($str1,$str2,$sep) { $str1~$sep x 2~$str2 };
f
Line 1,312 ⟶ 1,494:
Rosetta::Code
>
</syntaxhighlight>
</lang>
 
=={{header|REBOL}}==
Start the REBOL/Core interpreter in quiet mode with -q. q to quit.
 
<langsyntaxhighlight lang="rebol">$ rebol -q
>> f: func [a b s] [print rejoin [a s s b]]
>> f "Rosetta" "Code" ":"
Rosetta::Code
>> q</langsyntaxhighlight>
 
=={{header|Retro}}==
Retro's interpreter is started automatically. Once you see the "ok" prompt, you can proceed to enter code:
 
<langsyntaxhighlight Retrolang="retro">:f (sss-s) [ s:prepend ] sip s:prepend s:append ;
'Rosetta 'Code ': f</langsyntaxhighlight>
 
=={{header|REXX}}==
===version 1===
<langsyntaxhighlight lang="rexx">/*REXX*/ parse arg a b c
say f(a,b,c)
exit
f:return arg(1)arg(3)arg(3)arg(2)</langsyntaxhighlight>
 
===version 2===
This REXX version allows blanks to be included in the three strings.
<langsyntaxhighlight lang="rexx">/*REXX program demonstrates interactive programming by using a function [F]. */
say f('Rosetta', "Code", ':')
say f('The definition of a trivial program is ', " one that has no bugs.", '───')
exit /*stick a fork in it, we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
f: return arg(1) || copies(arg(3),2) || arg(2) /*return the required string to invoker*/</langsyntaxhighlight>
'''output''' &nbsp; when using the (internal) default strings:
<pre>
Line 1,352 ⟶ 1,534:
===version 3===
This REXX version is more to the keeping of the spirit of the task requirements.
<langsyntaxhighlight lang="rexx">/*REXX program demonstrates interactive programming by using a function [F]. */
say '══════════════════ enter the function F with three comma-separated arguments:'
parse pull funky
Line 1,358 ⟶ 1,540:
exit /*stick a fork in it, we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
f: return arg(1) || copies(arg(3),2) || arg(2) /*return the required string to invoker*/</langsyntaxhighlight>
'''output''' (a screen scraping is shown)
<br><br>'''int_act3''' is the name of the REXX program [INT_ACT3.REX)
Line 1,375 ⟶ 1,557:
 
=={{header|Ring}}==
<langsyntaxhighlight lang="ring">
r = "Rosetta"
c = "Code"
s = ":"
see r+s+s+c
</syntaxhighlight>
</lang>
Output:
<pre>
Line 1,386 ⟶ 1,568:
</pre>
 
=={{header|RPL}}==
RPL command-line interpreter is permanently running. Each created function can be called by its name, the same way as built-in instructions, without any prefix.
≪ "::" SWAP + + ≫ ‘FUNC’ STO
"Rosetta" "Code" FUNC
{{out}}
<pre>
1: "Rosetta::Code"
</pre>
=={{header|Ruby}}==
The read-eval-print loop (REPL) for Ruby is ''irb'', the '''''i'''nteractive '''r'''u'''b'''y shell''.
Line 1,391 ⟶ 1,581:
Start the interpreter by typing <code>irb</code> at the command line. You will see an input prompt, which by default is <code>name of this program(name of main object):line number:indent level> </code>:
 
<langsyntaxhighlight lang="ruby">$ irb
irb(main):001:0> def f(string1, string2, separator)
irb(main):002:1> [string1, '', string2].join(separator)
Line 1,399 ⟶ 1,589:
=> "Rosetta::Code"
irb(main):005:0> exit
$</langsyntaxhighlight>
 
=={{header|Rust}}==
This method use the crate clap: '''clap''' is used to parse and validate the string of command line arguments provided by the user at runtime. You provide the list of valid possibilities, and clap handles the rest. This means you focus on your applications functionality, and less on the parsing and validating of arguments.
<lang rust>
One of clap configurations is a mathod used a YAML file to build the CLI and keep the Rust source tidy or support multiple localized translations by having different YAML files for each localization.
- First, create the cli.yaml file to hold the CLI options, but it could be called anything we like:
<syntaxhighlight lang="yaml">
name: myapp
version: "1.0"
author: A Rust Developer <rustme@home.com>
about: Does awesome things
args:
- STRING1:
about: First string to use
required: true
index: 1
- STRING2:
about: Second string to use
required: true
index: 2
- SEPARATOR:
about: Separtor to use
required: true
index: 3
</syntaxhighlight>
 
- Then, simply add ''clap'' the ''yaml'' feature flag to your Cargo.toml.
<syntaxhighlight lang="yaml">
[dependencies]
clap = { version = "3.0.0-beta.2", features = ["yaml"] }
</syntaxhighlight>
 
- Enter this code in Rust source file
<syntaxhighlight lang="rust">
#[macro_use]
extern crate clap;
use clap::App;
fn main() {
let yaml = load_yaml!("cli.yaml");
println!("{:?}", f("Rosetta", "Code", ":"));
let matches = App::from(yaml).get_matches();
 
let str1 = matches.value_of("STRING1").unwrap();
let str2 = matches.value_of("STRING2").unwrap();
let str3 = matches.value_of("SEPARATOR").unwrap();
 
println!("{:?}", f(&str1, &str2, &str3));
}
 
fn f<'a>(s1: &'a str, s2: &'a str, sep :&'a str) -> String{
[s1,sep,sep,s2].iter().map(|x| *x).collect()
}</syntaxhighlight>
}
</lang>
Output:
<pre>
Line 1,423 ⟶ 1,652:
 
Without any arguments it starts from the command-line in [REPL] command-mode:
<langsyntaxhighlight Slang="s-lang">> slsh<Enter>
slsh version 0.9.1-2; S-Lang version: pre2.3.1-23
Copyright (C) 2005-2014 John E. Davis <jed@jedsoft.org>
Line 1,434 ⟶ 1,663:
Rosetta::Code
slsh> quit<Enter>
> </langsyntaxhighlight>
 
=={{header|Scala}}==
Line 1,444 ⟶ 1,673:
or a batch file depending on one's operating system:
 
<langsyntaxhighlight lang="scala">C:\>scala
Welcome to Scala version 2.8.0.r21356-b20100407020120 (Java HotSpot(TM) Client V
M, Java 1.6.0_05).
Line 1,451 ⟶ 1,680:
 
scala> "rosetta"
res0: java.lang.String = rosetta</langsyntaxhighlight>
Scala's REPL, starting with version 2.8, offers both auto-completion and alternatives when typing TAB. For instance, to check what methods are available on a String, one
may do the following:
<langsyntaxhighlight lang="scala">scala> "rosetta".
 
!= ## $asInstanceOf
Line 1,475 ⟶ 1,704:
 
scala> "rosetta".+(":")
res1: java.lang.String = rosetta:</langsyntaxhighlight>
One can use `object`, `class`, `trait`, `case object`,
`case class`, `def`, `val` and `var` definitions at any point. However,
`package` and `package object` definitions are not allowed.
<langsyntaxhighlight lang="scala">scala> val str1 = "rosetta"
str1: java.lang.String = rosetta</langsyntaxhighlight>
Using these features, one can build the code for a method by testing it
part of it individually:
<langsyntaxhighlight lang="scala">scala> val str2 = "code"
str2: java.lang.String = code
 
Line 1,490 ⟶ 1,719:
 
scala> str1 + separator + str2
res2: java.lang.String = rosetta:code</langsyntaxhighlight>
If one makes a mistake, the REPL will print an error message, and display the
point at which the mistake was made.
<langsyntaxhighlight lang="scala">scala> def (str1: String, str2: String, separator: String) =
<console>:1: error: identifier expected but '(' found.
def (str1: String, str2: String, separator: String) =
^</langsyntaxhighlight>
If a definition takes more than a line, the REPL will print an indented "|" sign, and
wait for more input. If one wishes to abort a definition, just enter two consecutive
empty lines.
<langsyntaxhighlight lang="scala">scala> def f(str1: String, str2: String, separator: String) =
| str1 + separator + str2
f: (str1: String,str2: String,separator: String)java.lang.String
Line 1,508 ⟶ 1,737:
 
scala> f("code", "rosetta", ", ")
res4: java.lang.String = code, rosetta</langsyntaxhighlight>
Also starting with version 2.8, a line starting with a dot will be interpreted
as a method call on the last result produced.
<langsyntaxhighlight lang="scala">scala> .length
res5: Int = 13
 
scala></langsyntaxhighlight>
The results are actually displayed with a special function, which pretty prints
some results, and avoid eagerly evaluating others, where that could cause problems
(such as infinite collections).
<langsyntaxhighlight lang="scala">scala> Array(1, 2, 3, 4)
res8: Array[Int] = Array(1, 2, 3, 4)
 
scala> println(res8)
[I@383244</langsyntaxhighlight>
There are many other features, such as the ability to add new jars to
the class path, executing commands on the shell, retrieving the last
Line 1,529 ⟶ 1,758:
=={{header|Scheme}}==
Several interpreters exist for Scheme. These are just some examples.
<syntaxhighlight lang="text">> scheme
Scheme Microcode Version 14.9
MIT Scheme running under FreeBSD
Line 1,550 ⟶ 1,779:
End of input stream reached
Happy Happy Joy Joy.
></langsyntaxhighlight>
<syntaxhighlight lang="text">> scheme48
Welcome to Scheme 48 1.8 (made by root on Wed Sep 24 22:37:08 UTC 2008)
Copyright (c) 1993-2008 by Richard Kelsey and Jonathan Rees.
Line 1,568 ⟶ 1,797:
I'll only ask another 99 times.
Exit Scheme 48 (y/n)? y
></langsyntaxhighlight>
 
=={{header|Sidef}}==
<langsyntaxhighlight lang="ruby">$ sidef -i
>>> func f(s1, s2, sep) { s1 + sep*2 + s2 };
f
>>> f('Rosetta', 'Code', ':')
"Rosetta::Code"
>>> </langsyntaxhighlight>
 
=={{header|Slate}}==
<langsyntaxhighlight lang="slate">slate[1]> s@(String traits) rosettaWith: s2@(String traits) and: s3@(String traits) [s ; s3 ; s3 ; s2].
[rosettaWith:and:]
slate[2]> 'Rosetta' rosettaWith: 'Code' and: ':'.
'Rosetta::Code'</langsyntaxhighlight>
 
=={{header|Smalltalk}}==
{{works with|GNU Smalltalk}}
<langsyntaxhighlight lang="smalltalk">$ gst
GNU Smalltalk ready
 
Line 1,596 ⟶ 1,825:
Rosetta::Code
'Rosetta::Code'
st></langsyntaxhighlight>
{{works with|Smalltalk/X}}
<langsyntaxhighlight lang="smalltalk">$ stx --repl
Welcome...
 
Line 1,606 ⟶ 1,835:
Rosetta::Code
-> (Answer): 'Rosetta::Code'
STX></langsyntaxhighlight>
 
=={{header|SNOBOL4}}==
Line 1,630 ⟶ 1,859:
Because you can enter expressions that span multiple lines, you have to type the semicolon (";") at the end so that it knows you are done.
 
<langsyntaxhighlight lang="sml">$ sml
Standard ML of New Jersey v110.67 [built: Fri Jul 4 09:00:58 2008]
- fun f (s1, s2, sep) = String.concatWith sep [s1, "", s2];
Line 1,639 ⟶ 1,868:
- f ("Rosetta", "Code", ":");
val it = "Rosetta::Code" : string
-</langsyntaxhighlight>
 
=={{header|Tcl}}==
<langsyntaxhighlight lang="tcl">$ tclsh
% proc f {s1 s2 sep} {
append result $s1 $sep $sep $s2
Line 1,648 ⟶ 1,877:
% f Rosetta Code :
Rosetta::Code
% exit</langsyntaxhighlight>
A simple alternative (one-liners are most convenient in an interactive shell):
<langsyntaxhighlight lang="tcl">$ tclsh
% proc f {a b s} {join [list $a "" $b] $s}
% f Rosetta Code :
Rosetta::Code
%</langsyntaxhighlight>
 
=={{header|TI-89 BASIC}}==
Line 1,669 ⟶ 1,898:
=={{header|UNIX Shell}}==
{{works with|Bourne Shell}}
<langsyntaxhighlight lang="bash">$ sh
sh-3.2$ concat() { echo "$1$3$3$2"; }
sh-3.2$ concat Rosetta Code :
Rosetta::Code
sh-3.2$</langsyntaxhighlight>
 
==={{header|C Shell}}===
<langsyntaxhighlight lang="csh">$ csh -f
% alias concat 'echo "\!:1\!:3\!:3\!:2"'
% concat Rosetta Code :
Rosetta::Code
%</langsyntaxhighlight>
 
==={{header|es}}===
<langsyntaxhighlight lang="es">$ es
; fn concat a b s { result $a$s$s$b }
; echo <={concat Rosetta Code :}
Rosetta::Code
;</langsyntaxhighlight>
 
=={{header|Ursa}}==
<langsyntaxhighlight lang="ursa">$ java -jar ursa.jar
cygnus/x ursa v0.76 (default, release 1)
[Oracle Corporation JVM 1.8.0_91 on Linux 3.16.0-4-686-pae i386]
Line 1,698 ⟶ 1,927:
> out (f "Rosetta" "Code" ":") endl console
Rosetta::Code
> _</langsyntaxhighlight>
 
=={{header|Vedit macro language}}==
Line 1,705 ⟶ 1,934:
 
To define a macro in text register 100:
<langsyntaxhighlight lang="vedit">RS(100, "RS(10, @1) RS(10, @3, APPEND) RS(10, @3, APPEND) RS(10, @2, APPEND)")</langsyntaxhighlight>
 
To call the macro:
<langsyntaxhighlight lang="vedit">RS(1,"Rosetta") RS(2,"Code") RS(3,":") Call(100)
Message(@10)</langsyntaxhighlight>
 
=={{header|XLISP}}==
How to start a REPL depends on the operating system.
<langsyntaxhighlight lang="lisp">XLISP 3.3, September 6, 2002 Copyright (c) 1984-2002, by David Betz
[1] (defun f (a b sep)
(string-append a sep sep b))
Line 1,721 ⟶ 1,950:
 
"Rosetta::Code"
[3] </langsyntaxhighlight>
 
=={{header|Wren}}==
Line 1,728 ⟶ 1,957:
$ ./wren
\\/"-
\_/ wren v0.24.0
> var f = Fn.new { |s1, s2, sep| s1 + sep + sep + s2 }
> f.call("Rosetta", "Code", ":")
Line 1,747 ⟶ 1,976:
zkl:
</pre>
{{Omit From|6502 Assembly|You'd have to create your own}}
 
{{Omit From|68000 Assembly|You'd have to create your own}}
{{Omit From|ARM Assembly|You'd have to create your own}}
{{Omit From|AArch64 Assembly|You'd have to create your own}}
{{Omit From|MIPS Assembly|You'd have to create your own}}
{{Omit From|8080 Assembly|You'd have to create your own}}
{{Omit From|8086 Assembly|You'd have to create your own}}
{{Omit From|Z80 Assembly|You'd have to create your own}}
{{Omit From|Ada}}
{{Omit From|ALGOL 68|might be possible, esp given that some A68 compilers are written in A68. Cubum autem in duos cubos, aut quadratoquadratum in duos quadratoquadratos, et generaliter nullam in infinitum ultra quadratum potestatem in duos eiusdem nominis fas est dividere cuius rei demonstrationem mirabilem sane detexi. Hanc rosettacode.org exiguitas non caperet.}}
9,476

edits