If there is intermediate representation for machines, there should be something for humans..
Human = :{ -- new type
Name :str
age :int -- private field
Parents :*Human[2] -- ancestor tree
}
:Human.Introduce () = -- public "method"
stdout.print "Hi! I'm ", .Name
:Human.HowOld () :int = -- age "getter"
ret .age
fibonacci (n :int) :int = -- Fibonacci sequence
if n == 0 -- classic way
ret 0
ret .(n - 1) + n
fibonacci (n) => .(n - 1) + n -- Fibonacci sequence
fibonacci (0) => 0 -- with function accepting literals
<ul> <!-- embedded code -->
@{for i := 5, i > 0, i--}
<li>$i</li>
</ul>
pipe is a research proposal to create conceptual programming language that draw narrow line among many PLs, DSLs and even declarative notations to form generalized semantic core that will be sufficient to express different programming techniques, paradigms and human intentions. pipe do not follow an approach to include every feature from XYZ languages. On the contrary, simple core but expressible syntax is what pipe strives for. The less complexity in its core, the more complex and reliable software you'll build upon.
- pipe Overview
- Comparison with other languages
- Transfer natural language to pipe
- Language Specification
- Proposed architecture
- References
Real pipes are well associated with a medium; medium for a flow. What kind of flow you decide. It might be a character stream between processes, it might be a real water flow controlled by a software or just a random thought flow laid down in the code. pipe's task is to give you right fittings, high quality materials, different gauges (for different purposes) and facilitate building your own pipework.
If you have any questions feel free to write me a message (tim.fayzrakhmanov@gmail.com) or open an issue.