All Projects → Fedjmike → tush

Fedjmike / tush

Licence: other
No description or website provided.

Programming Languages

c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to tush

Oh
A new Unix shell.
Stars: ✭ 1,206 (+5143.48%)
Mutual labels:  unix, functional
lunala
💎│ The official Lunala's source code! Yet a modern space exploration bot.
Stars: ✭ 24 (+4.35%)
Mutual labels:  functional
pocketlang
A lightweight, fast embeddable scripting language.
Stars: ✭ 1,412 (+6039.13%)
Mutual labels:  functional
kanji
A strongly typed GraphQL API framework
Stars: ✭ 12 (-47.83%)
Mutual labels:  functional
oneliners.txt
oneliners.txt
Stars: ✭ 64 (+178.26%)
Mutual labels:  unix
smooth
The smooth Class Library
Stars: ✭ 23 (+0%)
Mutual labels:  unix
rust-font-loader
A font loading utility written in rust.
Stars: ✭ 44 (+91.3%)
Mutual labels:  unix
coreutils
Unix core utilities implemented in Haskell
Stars: ✭ 22 (-4.35%)
Mutual labels:  unix
.config
⚙️ Bootstrappable user environment for macOS & Ubuntu
Stars: ✭ 31 (+34.78%)
Mutual labels:  unix
hawkweed
Yet another implementation of missing functions for Python
Stars: ✭ 20 (-13.04%)
Mutual labels:  functional
tao
A statically-typed functional language with generics, typeclasses, sum types, pattern-matching, first-class functions, currying, algebraic effects, associated types, good diagnostics, etc.
Stars: ✭ 847 (+3582.61%)
Mutual labels:  functional
frontend-clean-architecture
React + TypeScript app built using the clean architecture principles in a more functional way · 🧼 🏛 🍪
Stars: ✭ 1,816 (+7795.65%)
Mutual labels:  functional
fn
Functional library for PHP with proper currying
Stars: ✭ 22 (-4.35%)
Mutual labels:  functional
ObservableComputations
Cross-platform .NET library for computations whose arguments and results are objects that implement INotifyPropertyChanged and INotifyCollectionChanged (ObservableCollection) interfaces.
Stars: ✭ 94 (+308.7%)
Mutual labels:  functional
pen
The parallel, concurrent, and functional programming language for scalable software development
Stars: ✭ 394 (+1613.04%)
Mutual labels:  functional
hosts
A command line hosts file editor in one portable script.
Stars: ✭ 145 (+530.43%)
Mutual labels:  unix
InitWare
The InitWare Suite of Middleware allows you to manage services and system resources as logical entities called units. Its main component is a service management ("init") system.
Stars: ✭ 164 (+613.04%)
Mutual labels:  unix
onionjuggler
Manage your Onion Services via CLI or TUI on Unix-like operating system with a POSIX compliant shell.
Stars: ✭ 31 (+34.78%)
Mutual labels:  unix
awesome-programming-books
List of good programming books for beginners and professionals
Stars: ✭ 68 (+195.65%)
Mutual labels:  unix
subhook.nim
subhook wrapper for Nim https://github.com/Zeex/subhook
Stars: ✭ 15 (-34.78%)
Mutual labels:  unix

Tush Build Status

Tush is a modern, statically typed shell and scripting language. It is a major departure from classic Unix shells that were centred around string manipulation and substitution.

  • Structured. Work with lists, tuples, functions and files, not just raw strings.
  • Functional in syntax and type system, but imperative for working with the file system.
  • Concise but not cryptic. No more @du -hs "$v" >$@ or [[ -e "$f" ]]

gif

Design

  • An expressive type system. Parametric polymorphism, algebraic types and typeclasses. Immutable data.
  • Programs are functions. Command line arguments and pipes are unified as parameters.
  • Files, globs and regexes are first-class features with syntax for literals and path construction operators.
  • Lists, tuples, records and dictionaries, with handling operations inspired by relational algebra.
  • A new set of coreutils taking advantage of these facilities.
  • A full scripting language with sane control flow, pattern matching and macros.

See the quick start guide.

The language design has lots of open questions. Among them, how to:

  • Handle errors — exceptions, Maybe monad, error codes, other possibilites?
  • Dynamically type files — existential types?
  • Create a language that can be seamlessly used interactively, but also for safe scripting, for programming in the large.
  • Disambiguate the multiply operator (*) from a wildcard.

Building

Dependencies: Boehm garbage collector, GNU Readline, libkiss

sudo apt-get install libreadline-dev libgc-dev

git clone https://github.com/Fedjmike/libkiss
cd libkiss; make; cd -

git clone https://github.com/Fedjmike/tush
cd tush
make && sudo make install

Development

See developing.md and the todo list.

License

Copyright (c) 2015 Sam Nipps.

Unless otherwise stated, a source file in this package is under the GNU GPL V3 license.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].