Print itself
Create a program, which prints it's source code to the stdout!
Furor
A very short solution, using some special features of Furor: <lang Furor> "#s sto selfstring QUOTE @selfstring dup print QUOTE NL printnl end { „selfstring” }"
- s sto selfstring QUOTE @selfstring dup print QUOTE NL printnl end { „selfstring” }
</lang> And behold, here is a more complex but "traditional" solution of this famous task, solved by 3 loops: <lang Furor>
- g §vége §eleje - tokensize / sto maxlines
- s
7 {| {} §eleje[] printnl |}
@maxlines {| {} §eleje[] QUOTE print QUOTE NL |}
7 @maxlines {|| {} §eleje[] printnl |} end eleje: "#g §vége §eleje - tokensize / sto maxlines" "#s" "7 {| {} §eleje[] printnl |}" " @maxlines {| {} §eleje[] QUOTE print QUOTE NL |}" "7 @maxlines {|| {} §eleje[] printnl |}" "end" "eleje:" "vége:" "{ „selfstring” }" "{ „maxlines” }" vége: { „selfstring” } { „maxlines” } </lang>
Go
<lang go>package main
import (
"fmt" "io/ioutil" "log" "os" "path"
)
func main() {
self := path.Base(os.Args[0]) + ".go" bytes, err := ioutil.ReadFile(self) if err != nil { log.Fatal(err) } fmt.Print(string(bytes))
}</lang>
- Output:
Just the invoking line as remainder is, of course, as above.
$ go run self_print.go