This commit is contained in:
Ingy döt Net 2013-04-10 21:29:02 -07:00
parent 764da6cbbb
commit db842d013d
19005 changed files with 197040 additions and 7 deletions

View file

@ -0,0 +1,7 @@
Many language implementations come with an ''interactive mode''. This is a [[wp:command-line interpreter|command-line interpreter]] that reads lines from the user and evaluates these lines as statements or expressions. An interactive mode may also be known as a ''command mode'', a ''[[wp:read-eval-print loop|read-eval-print loop]]'' (REPL), or a ''shell''.
Show how to start this mode, then, as a small example of its use, interactively create a function of two strings and a separator that returns the strings separated by two concatenated instances of the separator.
For example, <tt>f('Rosetta', 'Code', ':')</tt> should return <tt>'Rosetta::Code'</tt>
Note: this task is not about creating your own interactive mode.

View file

@ -0,0 +1,2 @@
---
note: Basic language learning

View file

@ -0,0 +1,2 @@
10 DEF FN f$(a$, b$, s$) = a$+s$+s$+b$
PRINT FN f$("Rosetta", "Code", ":")

View file

@ -0,0 +1,2 @@
command.com
color f0

View file

@ -0,0 +1,8 @@
$ brat
# Interactive Brat
brat:1> f = { a, b, s | a + s + s + b }
#=> function: 0xb737ac08
brat:2> f "Rosetta" "Code" ":"
#=> Rosetta::Code
brat:3> quit
Exiting

View file

@ -0,0 +1,4 @@
C:\Burlesque>Burlesque.exe --shell
blsq ) {+]?+}hd"Rosetta""Code"':!a
"Rosetta:Code"
blsq )

View file

@ -0,0 +1,6 @@
Clojure 1.1.0
user=> (defn f [s1 s2 sep] (str s1 sep sep s2))
#'user/f
user=> (f "Rosetta" "Code" ":")
"Rosetta::Code"
user=>

View file

@ -0,0 +1,12 @@
$ 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/>.
...
* (defun f (string-1 string-2 separator)
(concatenate 'string string-1 separator separator string-2))
F
* (f "Rosetta" "Code" ":")
"Rosetta::Code"
*

View file

@ -0,0 +1 @@
$ rune # from an OS shell. On Windows there is also a desktop shortcut.

View file

@ -0,0 +1,7 @@
? def f(string1 :String, string2 :String, separator :String) {
> return separator.rjoin(string1, "", string2)
> }
# value: <f>
? f("Rosetta", "Code", ":")
# value: "Rosetta::Code"

View file

@ -0,0 +1,5 @@
(defun my-join (str1 str2 sep)
(concat str1 sep sep str2))
my-join
(my-join "Rosetta" "Code" ":")
"Rosetta::Code"

View file

@ -0,0 +1,7 @@
*** Welcome to IELM *** Type (describe-mode) for help.
ELISP> (defun my-join (str1 str2 sep)
(concat str1 sep sep str2))
my-join
ELISP> (my-join "Rosetta" "Code" ":")
"Rosetta::Code"
ELISP>

View file

@ -0,0 +1,5 @@
$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"

View file

@ -0,0 +1,3 @@
( scratchpad ) : cool-func ( w1 w2 sep -- res ) dup append glue ;
( scratchpad ) "Rosetta" "Code" ":" cool-func .
"Rosetta::Code"

View file

@ -0,0 +1,9 @@
$ <i>gforth</i>
Gforth 0.7.0, Copyright (C) 1995-2008 Free Software Foundation, Inc.
Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
Type `bye' to exit
<i>: f ( separator suffix prefix -- )</i> compiled
<i>pad place 2swap 2dup pad +place pad +place pad +place</i> compiled
<i>pad count ;</i> ok
<i>s" :" s" Code" s" Rosetta" f cr type</i>
Rosetta::Code ok

View file

@ -0,0 +1,39 @@
~% gap
######### ###### ########### ###
############# ###### ############ ####
############## ######## ############# #####
############### ######## ##### ###### #####
###### # ######### ##### ##### ######
###### ########## ##### ##### #######
##### ##### #### ##### ###### ########
#### ##### ##### ############# ### ####
##### ####### #### #### ########### #### ####
##### ####### ##### ##### ###### #### ####
##### ####### ##### ##### ##### #############
##### ##### ################ ##### #############
###### ##### ################ ##### #############
################ ################## ##### ####
############### ##### ##### ##### ####
############# ##### ##### ##### ####
######### ##### ##### ##### ####
Information at: http://www.gap-system.org
Try '?help' for help. See also '?copyright' and '?authors'
Loading the library. Please be patient, this may take a while.
GAP4, Version: 4.4.12 of 17-Dec-2008, x86_64-unknown-linux-gnu-gcc
Components: small 2.1, small2 2.0, small3 2.0, small4 1.0, small5 1.0, small6 1.0, small7 1.0, small8 1.0,
small9 1.0, small10 0.2, id2 3.0, id3 2.1, id4 1.0, id5 1.0, id6 1.0, id9 1.0, id10 0.1, trans 1.0,
prim 2.1 loaded.
Packages: AClib 1.1, Polycyclic 2.6, Alnuth 2.2.5, AutPGrp 1.4, CrystCat 1.1.3, Cryst 4.1.6, CRISP 1.3.2,
CTblLib 1.1.3, TomLib 1.1.4, FactInt 1.5.2, GAPDoc 1.2, FGA 1.1.0.1, IRREDSOL 1.1.2, LAGUNA 3.5.0,
Sophus 1.23, Polenta 1.2.7, ResClasses 2.5.3 loaded.
gap> join := function(a, b, sep)
> return Concatenation(a, sep, sep, b);
> end;
function( a, b, sep ) ... end
gap>
gap> join("Rosetta", "Code", ":");
"Rosetta::Code"
gap>

View file

@ -0,0 +1,11 @@
package main
import "fmt"
func f(s1, s2, sep string) string {
return s1+sep+sep+s2
}
func main() {
fmt.Println(f("Rosetta", "Code", ":"))
}

View file

@ -0,0 +1,12 @@
C:\Apps\groovy>groovysh
Groovy Shell (1.6.2, JVM: 1.6.0_13)
Type 'help' or '\h' for help.
---------------------------------------------------------------------------------------------------
groovy:000> f = { a, b, sep -> a + sep + sep + b }
===> groovysh_evaluate$_run_closure1@5e8d7d
groovy:000> println f('Rosetta','Code',':')
Rosetta::Code
===> null
groovy:000> exit
C:\Apps\groovy>

View file

@ -0,0 +1,11 @@
$ ghci
___ ___ _
/ _ \ /\ /\/ __(_)
/ /_\// /_/ / / | | GHC Interactive, version 6.4.2, for Haskell 98.
/ /_\\/ __ / /___| | http://www.haskell.org/ghc/
\____/\/ /_/\____/|_| Type :? for help.
Loading package base-1.0 ... linking ... done.
Prelude> let f as bs sep = as ++ sep ++ sep ++ bs
Prelude> f "Rosetta" "Code" ":"
"Rosetta::Code"

View file

@ -0,0 +1,6 @@
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

View file

@ -0,0 +1,3 @@
f=: [: ; 0 2 2 1&{
f 'Rosetta';'Code';':'
Rosetta::Code

View file

@ -0,0 +1,7 @@
$ 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;}
js> f('Rosetta', 'Code', ':')
Rosetta::Code
js> quit()
$

View file

@ -0,0 +1,5 @@
$ rlwrap k
K Console - Enter \ for help
f:{x,z,z,y}
f["Rosetta";"Code";":"]
"Rosetta::Code"

View file

@ -0,0 +1,9 @@
$ <i>logo</i>
Welcome to Berkeley Logo version 5.6
? <i>to f :prefix :suffix :separator</i>
> <i>output (word :prefix :separator :separator :suffix)</i>
> <i>end</i>
f defined
? <i>show f "Rosetta "Code ":</i>
Rosetta::Code
?

View file

@ -0,0 +1,8 @@
$ lua
Lua 5.1.2 Copyright (C) 1994-2007 Lua.org, PUC-Rio
> function conc(a, b, c)
>> return a..c..c..b
>> end
> print(conc("Rosetta", "Code", ":"))
Rosetta::Code
>

View file

@ -0,0 +1,6 @@
$ m4
define(`f',`$1`'$3`'$3`'$2')
==>
f(`Rosetta',`Code',`:')
==>Rosetta::Code
m4exit

View file

@ -0,0 +1,5 @@
function x=f(a,b,sep)
x = [a,sep,b];
return;
end;
f('Rosetta', 'Code', ':')

View file

@ -0,0 +1,4 @@
MCSKIP MT,<>
MCINS %.
MCDEF F WITHS (,,)
AS <%WA1.%WA3.%WA2.%WA2.>

View file

@ -0,0 +1,4 @@
f[x_,y_,z_]:=Print[x,z,z,y]
->""
f["Rosetta","Code",":"]
->Rosetta::Code

View file

@ -0,0 +1,3 @@
(%i1) f(a, b, c) := sconcat(a, c, c, b)$
(%i2) f("Rosetta", "Code", ":");
(%o2) "Rosetta::Code"

View file

@ -0,0 +1,13 @@
$ perl -de1
Loading DB routines from perl5db.pl version 1.3
Editor support available.
Enter h or `h h' for help, or `man perldebug' for more help.
main::(-e:1): 1
DB<1> sub f {my ($s1, $s2, $sep) = @_; $s1 . $sep . $sep . $s2}
DB<2> p f('Rosetta', 'Code', ':')
Rosetta::Code
DB<3> q

View file

@ -0,0 +1,7 @@
$ 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};
print f('Rosetta', 'Code', ':');
^D
Rosetta::Code
$

View file

@ -0,0 +1,5 @@
$ perl -lpe '$_=eval||$@'
sub f { join '' => @_[0, 2, 2, 1] }
f qw/Rosetta Code :/
Rosetta::Code

View file

@ -0,0 +1 @@
$ pil +

View file

@ -0,0 +1,6 @@
: (de f (Str1 Str2 Sep)
(pack Str1 Sep Sep Str2) )
-> f
: (f "Rosetta" "Code" ":")
-> "Rosetta::Code"

View file

@ -0,0 +1,21 @@
% 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
% c:/users/joel-seven/appdata/roaming/swi-prolog/pl.ini compiled 0.13 sec, 876,172 bytes
XPCE 6.6.66, July 2009 for Win32: NT,2000,XP
Copyright (C) 1993-2009 University of Amsterdam.
XPCE comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
The host-language is SWI-Prolog version 5.10.0
For HELP on prolog, please type help. or apropos(topic).
on xpce, please type manpce.
1 ?- assert((f(A, B,C) :- format('~w~w~w~w~n', [A, C, C, B]))).
true.
2 ?- f('Rosetta', 'Code', ':').
Rosetta::Code
true.
3 ?-

View file

@ -0,0 +1,10 @@
python
Python 2.6.1 (r261:67517, Dec 4 2008, 16:51:00) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> def f(string1, string2, separator):
return separator.join([string1, '', string2])
>>> f('Rosetta', 'Code', ':')
'Rosetta::Code'
>>>

View file

@ -0,0 +1,25 @@
$ R
R version 2.7.2 (2008-08-25)
Copyright (C) 2008 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
Natural language support but running in an English locale
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> f <- function(a, b, s) paste(a, "", b, sep=s)
> f("Rosetta", "Code", ":")
[1] "Rosetta::Code"
> q()
Save workspace image? [y/n/c]: n

View file

@ -0,0 +1,4 @@
/*REXX*/ parse arg a b c
say f(a,b,c)
exit
f:return arg(1)arg(3)arg(3)arg(2)

View file

@ -0,0 +1,7 @@
/*REXX program to show 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 done.*/
/*──────────────────────────────────F subroutine────────────────────────*/
f: return arg(1) || copies(arg(3),2) || arg(2) /*return required str.*/

View file

@ -0,0 +1,7 @@
/*REXX program to show interactive programming by using a function [F]. */
say ' enter the function F with three arguments:'
parse pull funky
interpret 'SAY' funky
exit /*stick a fork in it, we're done.*/
/*──────────────────────────────────F subroutine────────────────────────*/
f: return arg(1) || copies(arg(3),2) || arg(2) /*return required str.*/

View file

@ -0,0 +1,8 @@
oiseau:/tmp> racket
Welcome to Racket v5.3.3.5.
> (define (f string-1 string-2 separator)
(string-append string-1 separator separator string-2))
> (f "Rosetta" "Code" ":")
"Rosetta::Code"
> ^D
oiseau:/tmp>

View file

@ -0,0 +1,9 @@
$ irb
irb(main):001:0> def f(string1, string2, separator)
irb(main):002:1> [string1, '', string2].join(separator)
irb(main):003:1> end
=> nil
irb(main):004:0> f('Rosetta', 'Code', ':')
=> "Rosetta::Code"
irb(main):005:0> exit
$

View file

@ -0,0 +1,8 @@
C:\>scala
Welcome to Scala version 2.8.0.r21356-b20100407020120 (Java HotSpot(TM) Client V
M, Java 1.6.0_05).
Type in expressions to have them evaluated.
Type :help for more information.
scala> "rosetta"
res0: java.lang.String = rosetta

View file

@ -0,0 +1,22 @@
scala> "rosetta".
!= ## $asInstanceOf
$isInstanceOf + ==
charAt clone codePointAt
codePointBefore codePointCount compareTo
compareToIgnoreCase concat contains
contentEquals endsWith eq
equals equalsIgnoreCase finalize
getBytes getChars getClass
hashCode indexOf intern
isEmpty lastIndexOf length
matches ne notify
notifyAll offsetByCodePoints regionMatches
replace replaceAll replaceFirst
split startsWith subSequence
substring synchronized this
toCharArray toLowerCase toString
toUpperCase trim wait
scala> "rosetta".+(":")
res1: java.lang.String = rosetta:

View file

@ -0,0 +1,2 @@
scala> val str1 = "rosetta"
str1: java.lang.String = rosetta

View file

@ -0,0 +1,8 @@
scala> val str2 = "code"
str2: java.lang.String = code
scala> val separator = ":"
separator: java.lang.String = :
scala> str1 + separator + str2
res2: java.lang.String = rosetta:code

View file

@ -0,0 +1,4 @@
scala> def (str1: String, str2: String, separator: String) =
<console>:1: error: identifier expected but '(' found.
def (str1: String, str2: String, separator: String) =
^

View file

@ -0,0 +1,9 @@
scala> def f(str1: String, str2: String, separator: String) =
| str1 + separator + str2
f: (str1: String,str2: String,separator: String)java.lang.String
scala> f("rosetta", "code", ":")
res3: java.lang.String = rosetta:code
scala> f("code", "rosetta", ", ")
res4: java.lang.String = code, rosetta

View file

@ -0,0 +1,4 @@
scala> .length
res5: Int = 13
scala>

View file

@ -0,0 +1,5 @@
scala> Array(1, 2, 3, 4)
res8: Array[Int] = Array(1, 2, 3, 4)
scala> println(res8)
[I@383244

View file

@ -0,0 +1,22 @@
> scheme
Scheme Microcode Version 14.9
MIT Scheme running under FreeBSD
Type `^C' (control-C) followed by `H' to obtain information about interrupts.
Scheme saved on Monday June 17, 2002 at 10:03:44 PM
Release 7.7.1
Microcode 14.9
Runtime 15.1
1 ]=> (define (f string-1 string-2 separator)
(string-append string-1 separator separator string-2))
;Value: f
1 ]=> (f "Rosetta" "Code" ":")
;Value 1: "Rosetta::Code"
1 ]=> ^D
End of input stream reached
Happy Happy Joy Joy.
>

View file

@ -0,0 +1,18 @@
> 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.
Please report bugs to scheme-48-bugs@s48.org.
Get more information at http://www.s48.org/.
Type ,? (comma question-mark) for help.
> (define (f string-1 string-2 separator)
(string-append string-1 separator separator string-2))
; no values returned
> (f "Rosetta" "Code" ":")
"Rosetta::Code"
> ^D
Exit Scheme 48 (y/n)? ^D
I'll only ask another 100 times.
Exit Scheme 48 (y/n)? ^D
I'll only ask another 99 times.
Exit Scheme 48 (y/n)? y
>

View file

@ -0,0 +1,10 @@
$ gst
GNU Smalltalk ready
st> |concat|
st> concat := [ :a :b :c | (a,c,c,b) displayNl ].
a BlockClosure
st> concat value: 'Rosetta' value: 'Code' value: ':'.
Rosetta::Code
'Rosetta::Code'
st>

View file

@ -0,0 +1,7 @@
$ tclsh
% proc f {s1 s2 sep} {
append result $s1 $sep $sep $s2
}
% f Rosetta Code :
Rosetta::Code
% exit

View file

@ -0,0 +1,5 @@
$ tclsh
% proc f {a b s} {join [list $a "" $b] $s}
% f Rosetta Code :
Rosetta::Code
%