Streem

基于流(stream)的编程语言原型。「prototype of stream based programming language」

Github stars Tracking Chart

Streem

Build Status
Gitter

Streem is a stream based concurrent scripting language. It is based on a
programming model similar to the shell, with influences from Ruby, Erlang, and
other functional programming languages.

Note: Streem is still in the design stage. It's not working yet. Stay tuned.

Compiling

Installing dependencies

  • bison
  • flex
  • gcc / clang

Run make

make

Examples

In Streem, a simple cat program looks like this:

stdin | stdout

You can try it out by (firstly cd to streem top directory):

$ bin/streem -e 'stdin | stdout'

or

$ bin/streem examples/01cat.strm

Streem is a (sort of) DSL for data flows. Above code means
building data-flow connection between stdin and stdout.
Actual data processing will be done in the event loop
invoked after program execution.

For another example, a simple FizzBuzz will look like this:

# seq(100) returns a stream of numbers from 1 to 100.
# A function object in pipeline works as a map function.
# stdout is an output destination.
seq(100) | map{x->
  if (x % 15 == 0)     "FizzBuzz"
  else if (x % 3 == 0) "Fizz"
  else if (x % 5 == 0) "Buzz"
  else                 x
} | stdout

The second part in the pipeline ({x ->...}) is a function
object. If a function object is connected in the pipeline,
it will be invoked for each element in the stream.

There are more examples under folder examples/. Just play with them!

Contributing

Send a pull request to https://github.com/matz/streem. We consider
you have granted non-exclusive right to your contributed code under
MIT license. Use https://github.com/matz/streem/issues for
discussion.

License

MIT license (© 2015-2016 Yukihiro Matsumoto)

Overview

Name With Ownermatz/streem
Primary LanguageC
Program languageMakefile (Language Count: 6)
Platform
License:MIT License
Release Count19
Last Release Name201611 (Posted on 2016-10-08 15:39:10)
First Release Name201502 (Posted on 2014-12-11 17:47:01)
Created At2014-12-11 08:07:50
Pushed At2022-01-03 10:45:02
Last Commit At2022-01-03 19:45:02
Stargazers Count4.6k
Watchers Count360
Fork Count237
Commits Count1k
Has Issues Enabled
Issues Count63
Issue Open Count21
Pull Requests Count100
Pull Requests Open Count4
Pull Requests Close Count20
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private
To the top