-login:
user: password:
Polski
huginn - programming language with no quirks, so simple every child can master it.
Fork me on GitHub
git clone https://codestation.org/repo/huginn.git
git clone https://github.com/AmokHuginnsson/huginn.git
git clone https://bitbucket.org/huginn/huginn.git

Huginn is a computer programming language with following traits:

  • interpretedmultiplatform, what you type is what you got
  • imperativeuse statements to change a program's state
  • functional stylefunctions, lambdas and closures are first class citizens
  • object orienteduser defined types, composition, inheritance, exceptions
  • introspective, non-reflective type systemuser defined types are fixed and immutable at runtime,
    no monkey patching
  • strongly typedabsolutely no implicit value conversions and no implicit type coercion
  • dynamically typedfinal type consistency checks are done at runtime
  • duck typinga set of members determine the valid semantics of a type
  • no quirks guaranteesemantics is consistent across types in all contexts
  • support arbitrary precision calculations per built-in type precision is restricted only by the amount of hardware resources
  • interpreter/executor trivially embeddable in C++ code
    #include <yaal/tools/hhuginn.hxx>
    void foo( HStreamInterface& src_ ) {
    	HHuginn h;
    	h.load( src_ );
    	h.preprocess();
    	if ( h.parse() && h.compile() && h.execute() ) {
    		cout << "ok" << endl;
    	}
    }

Example program written in Huginn language:

Editor (vim) - pow.hgn (Try it online!) [+line no]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
#! /bin/sh
exec huginn -E "${0}" "${@}"
#! huginn

/* First Huginn program. */

import Algorithms as algo;

main( argv_ ) {
	print( "Hello World!\n" );
	argc = size( argv_ );
	print( "number of arguments: {}\n".format( argc ) );
	for ( i, arg : algo.enumerate( argv_ ) ) {
		print( "argv_[{}]: {}\n".format( i, arg ) );
	}
	if ( argc >= 3 ) {
		base = number( argv_[1] );
		exp = number( argv_[2] );
		print( "{} ^ {} = {}\n".format( argv_[1], argv_[2], base ^ exp ) );
	} else {
		print( "Not enough arguments to calculate power.\n" );
	}
	return ( 0 );
}

Output:

Terminal - shell session [–line no]
[amok@vegeta](2/1)~/$ ./pow.hgn 3 333
Hello World!
number of arguments: 3
argv_[0]: ./pow.hgn
argv_[1]: 3
argv_[2]: 333
3 ^ 333 = 76098802313205980972042586726503278072789635637207786511701003\
703579163143930619961304414564937852255793535157094995201000183376930256\
6531786879537190794573523
codestation.org hosted projects download instructions.

CodeStation.org signing key (0xD8C4916596A0BD07).

To install this key on Debian/Ubuntu/Raspbian (or any of their respective derivatives) simply invoke:

Terminal - shell session [–line no]
apt-key adv --keyserver keys.gnupg.net --recv 0xD8C4916596A0BD07

CodeStation.org hosted projects have prebuild packages available for following operating systems:
Debian, Ubuntu, CentOS, Fedora, FreeBSD, Darwin (OSX), Oracle Solaris, Windows, Raspbian

For Debian (Stable):

Terminal - shell session [–line no]
echo "deb https://codestation.org/debian/ stretch/" > /etc/apt/sources.list.d/codestation.list
apt-get update
apt-get install <pkg-name>

For Debian (Testing/Unstable):

Terminal - shell session [–line no]
echo "deb https://codestation.org/debian/ sid/" > /etc/apt/sources.list.d/codestation.list
apt-get update
apt-get install <pkg-name>

For Ubuntu:

Terminal - shell session [–line no]
echo "deb https://codestation.org/ubuntu/ bionic/" > /etc/apt/sources.list.d/codestation.list
apt-get update
apt-get install <pkg-name>

For CentOS (Final):

Terminal - shell session [–line no]
curl https://codestation.org/download/centos.codestation.repo -o /etc/yum.repos.d/codestation.repo
yum update
yum install <pkg-name>

For Fedora:

Terminal - shell session [–line no]
curl https://codestation.org/download/fedora.codestation.repo -o /etc/yum.repos.d/codestation.repo
dnf update
dnf install <pkg-name>

For FreeBSD (assuming you have pkgng(1) configured):

Terminal - shell session [–line no]
mkdir -p /usr/local/etc/pkg/repos/
cat > /usr/local/etc/pkg/repos/codestation.conf << EOF
codestation: {
	url: https://codestation.org/freebsd/
}
EOF
pkg update
pkg install <pkg-name>

For Raspbian (Stable):

Terminal - shell session [–line no]
echo "deb https://codestation.org/raspbian/ stretch/" > /etc/apt/sources.list.d/codestation.list
apt-get update
apt-get install <pkg-name>

For Darwin (OSX):
On Darwin you have to manually downaload package from: Darwin package repository

Terminal - shell session [–line no]
hdiutil mount </path/to/downloaded/package-version.dmg>
installer -pkg /Volumes/<package-name-version> -target /
hdiutil unmount /Volumes/<package-name-version>

For Oracle Solaris:
On Oracle Solaris you have to manually downaload package from: Oracle Solaris package repository

For Windows:
On Windows you have to manually downaload package from: Windows package repository