This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!

A cool tool for functional programming. Funtions can be operated directly with definition domain that can be used in type testing

Project Description

Introduction

Abstract

A cool tool for functional programming. Operating Functions as in math. Type testing is implemented in an awsome way.

Keywords

Functional Programming, Type Testing

Feature:

  1. function with domain, the domain can be used to type testing
  2. operator on functions, for example, f + g: x -> f(x) + g(x) where f, g, f+g are functions
  3. to glue functions with glue function or method that can be used to define piecewise functions
  4. no 3rd part requirement
  5. implement memoization in oo way. (new in this version)

Content

Classes:

BaseFunction -> Type (or Domain), Function
BaseFunction: func: function (or number)
Function: func,
          domain: Type, the definition domain of func

Functions:

Interval(a:num, b:num) -> Type
restrict(t:Type) -> decorator(f:function -> Function(f, t))

Constants:

TURE, FLASE(Type) represent universal set, empty set

Grammar

Basic grammar

import:

import fcool (or from fcool import *)

Define Function with domain:

F = Function(lambda x:x, Type(lambda x:x>2))
F(3)

Operators on Functions:

(F + F)(3)
(F * F)(4)
(2 * F)(3)

2D Functions and Types:

f = 3     # or lambda x,y: 3
g = lambda x,y: 2/x
t = Type(lambda x:x<5 and isinstance(x, int)) * TRUE  # define type(domain) and functions on it
    <=> Type(lambda x, y:x<5) & Type(lambda x, y:isinstance(x, int))
G = Function(g, t)
F = Function(f, t)

Memoize:

# f is the object of BaseFunction
f.memoize()
f.unmemoize()  # prohibit to use memo
f.del_memo()   # just clear the memo

Advanced Grammar

Glue Functions:

print(G.glue(F)(3,4), glue(G, F)(3,4))    # glue functions

ID = Function(lambda x:x)
print(ID.compose(F)(3,4))      # composition

Type testing with restrict decorator:

@restrict(Interval(1,2))       # restriction decorator
def f(x):
    return x

print(f(1))
try:
    print(f(3))
except Exception as ex:
    print(ex)

G=Function(lambda x:x)
print(G(3))
G = G | Interval(1,2)           # restriction method
print(G(3))
Release History

Release History

This version
History Node

0.1.0

History Node

0.0.3

History Node

0.0.2

History Node

0.0.1

Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
fcool-0.1.0.tar.gz (2.7 kB) Copy SHA256 Checksum SHA256 Source Feb 5, 2017

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting