Code Monkey home page Code Monkey logo

fetlang's Introduction

Fetlang

Fetlang is a statically typed, procedural, esoteric programming language and reference implementation. It is designed such that source code looks like poorly written fetish erotica.

Fetlang is not recommended for production use at this moment, especially in medical or military applications.

Example

The following example outputs the arguments given to the executable:

Make Sean moan
Worship Carrie's feet

Bind Amy to Saint Andrew's Cross
    Have Amy hogtie Sean
    If Amy is Carrie's bitch
        Make Slave scream Sean's name
        Make Sean moan

Features

  • Input/output with standard streams and files
  • Statically typed
  • Gendered variables
  • Access previously mentioned variables using pronouns
  • Numbers represented internally as fractions instead of floating point
  • Transpiles to C
  • Confusing English-like syntax and unhelpful error messages
  • Turing complete (See here for a Rule 110 implementation by Kjeld Schmidt)
  • Has a Vim plugin (thanks to Kutsan Kaplan)
  • Can be extended with C, C++, or Rust

Building

Requirements:

  • meson
  • ninja
  • gcc/g++(>=9.1) or clang(>=12.0)

Supported systems:

  • macOS (tested in CI)
  • GNU/Linux (tested in CI)
  • Other modern Unix-like systems
  • Windows 10 under WSL/WSL2

Build Fetlang:

$ git clone https://github.com/fetlang/fetlang
$ cd fetlang
$ meson setup --buildtype=release src build
$ cd build
$ # Build Fetlang
$ ninja
$ # Run unit tests
$ ninja test

Install Fetlang:

$ sudo ninja install
$ # Make sure it worked
$ fetlang ../examples/hello.fet && ./a.out
Hello World!

Documentation

Comments
Control Flow
Fetishes
Fetish Reference
Grammar
Tutorial
Types
Variables

License

Fetlang is licensed under the BSDM (BSD, modified) license

fetlang's People

Contributors

dairyisscary avatar fetlang avatar property404 avatar robertsvensson avatar srgfromz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fetlang's Issues

Seg Fault

Followed the installation instructions, get a seg fault whenever I run fetlang.

Not sure what info you need, so here's the output from the tests:

josh@DESKTOP-JE144MQ:~/fetlang/build$ ninja test
[0/1] Running all tests.
1/1 unit_tests                              FAIL     0.02 s

OK:         0
FAIL:       1
SKIP:       0
TIMEOUT:    0


The output from the failed tests:

1/1 unit_tests                              FAIL     0.02 s

--- command ---
/home/josh/fetlang/build/unit_tests
-------

Full log written to /home/josh/fetlang/build/meson-logs/testlog.txt
FAILED: meson-test
/usr/bin/python3 -u /usr/local/bin/meson test --no-rebuild --print-errorlogs
ninja: build stopped: subcommand failed.

Add fetlang to github linguist

More of a meta-issue than anything to do with the language. But you can add languages to the github language detection (called linguist) here: https://github.com/github/linguist

I think you can even assign a colour value to it (otherwise it's just grey) but I'm not 100% sure about that.

Could be cool to have github recognise the .fet files correctly ๐Ÿ˜„

Directory build not created

When building on Ubuntu 16.04 using the standard procedure from README, the build directory is not automatically created. This can be fixed by creating the directory manually.

Have grammar

In grammar.md under have grammar it is written:
have <rho - mutable>

Should it not be:
have <lho - mutable>
since the have grammar has the RHO on the left and the LHO on the right?

License Change

Request license is changed from:

Fetlang is licensed under the BSDM (BSD, modified) license

To:

Fetlang is licensed under the BSDM (BSD, modified) Consent

vim-fetlang: Language support for Fetlang

https://github.com/kutsan/vim-fetlang

I have been developing language support for vim and you can check out by the link above. It's still very beginning of its development. Only wrote initial syntax support (for keywords and comments), which works okay. I couldn't find another project for it, it's probably the first one. I will try to cover syntax, indent, compiler and sections support. Most things don't work for now. I have been still learning the Fetlang itself, so, I'll make it more mature by the time of progress while I am free.

Since this one is not a real issue. Feel free to close it if you wish.

More Appropriate Syntax?

I wanna start out saying this is a hilarious idea and I'm impressed you've taken the time to flesh it out! ๐Ÿ˜ƒ

What I have is a suggestion. You say the language

is designed such that the source code looks like poorly written fetish erotica.

The implementation currently uses imperative sentences:

Make Sean moan
Have Amy hogtie Sean
Make Slave scream Sean's name

I feel it would be more appropriate to use declarative sentences. This way the code looks a lot more like an actual story:

Sean moans
Amy hogties Sean
Slave screams Sean's name

I completely understand that this would require a big rewrite of the repo. It's an idea. ๐Ÿ˜

i'm a petty grammar nazi

in the readme, it should say that the language is written "in such a way that" instead of "written such that"

Dependency algorithm not found.

โ‹Š> ~/g/fetlang on master โ—ฆ meson --buildtype=release src build 23:06:09
The Meson build system
Version: 0.44.0.dev1
Source dir: /Users/syny/github/fetlang/src
Build dir: /Users/syny/github/fetlang/build
Build type: native build
Project name: Fetlang
Native C compiler: cc (clang 9.0.0)
Native C++ compiler: c++ (clang 9.0.0)
Build machine cpu family: x86_64
Build machine cpu: x86_64

Meson encountered an error in file meson.build, line 12, column 0:
Dependency algorithm not found. It is not a valid boost library.

A full log can be found at /Users/syny/github/fetlang/build/meson-logs/meson-log.txt

Random and Data Strucktures

I tried to write my Home Work for AI in Fetlang, but Operations like random Numbers and convenient access to Elements in Chains are missing. It would also great to have Data Strucktures like sets and maps (dict).

Naming could be offensive

The following is offensive IMO on account of the choice of occidental first names.

lick Ada's feet forty three times
lick Sasha's left nipple forty five times
lick Leo's balls sixty times
lick Randy's cock sixty two times
lick Wendy's asshole ninety one times
lick Ender's belly ninety three times
lick Orange's nose forty six times
lick Inky's forehead forty four times

Suggestions:
lick Ahmed's balls sixty times or
lick Meera's left nipple forty five times

Types

All numbers in Fetlang are represented as fractions: a numerator over a denominator
surely that should be defined as
All numbers in Fetlang are represented as fractions: a dominant over a submissive.

The mathematical action of creatign the reciprocal of a number should be the 'switch' operator.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.