Skip to main content

PyTlin

Module implementing the Kotlin functions also, let, and run in Python. Additionally it includes sh-like (and Mathematica-like) piping syntax.

The Kotlin functions are documented in here.

Install

pip install PyTlin

Syntax

from PyTlin import k

k(obj).let(func).also(func)
k.run(func)
k(obj) | func1 | func2 | ...
k(obj) @ func1 @ func2 @ ...

Here all expressions (except k.run(func)) is wrapped in the class k. To recover obj one can apply either of these

k(obj).end
k(obj) | 'end'
k(obj) | 0
k(obj) @ 'end'
k(obj) @ 0

Example

from PyTlin import k
class Person:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def __repr__(self):
        return '%s, %d' % (self.name, self.age)
    def increaseAge(self):
        self.age = self.age + 1
    def nameToUpperCase(self):
        self.name = self.name.upper()

student = Person('Pete', 18)
print(student) #Pete, 18

let

name = k(student).let(lambda x: (print(x),x.name)[1]) #Pete, 18
print(name) #Pete

also

newstudent = k(student).also(lambda x: (x.increaseAge(), x.nameToUpperCase()))
print(newstudent) #PETE, 19

run

mood = 'sad'
k.run(lambda mood = 'happy': print(mood)) #happy
print(mood) #sad

Piping

Piping can be done with either .let or with pipe operators @ (Mathematica-like in reverse order) or | (sh-like).

ops=k(4).let(lambda x: x*2).let(lambda x: x+3)
print(ops) #11
print(type(ops)) #<class 'PyTlin.k'>
print(ops.end) #11
print(type(ops.end)) #<class 'int'>

print(ops.end ==
 k(4) @ (lambda x: x*2) @ (lambda x: x+3) @ 'end') #True

print(ops.end ==
 k(4) | (lambda x: x*2) | (lambda x: x+3) | 0) #True

Download files

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

Source Distribution

PyTlin-1.2.tar.gz (2.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

PyTlin-1.2-py3-none-any.whl (3.9 kB view details)

Uploaded Python 3

File details

Details for the file PyTlin-1.2.tar.gz.

File metadata

  • Download URL: PyTlin-1.2.tar.gz
  • Upload date:
  • Size: 2.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for PyTlin-1.2.tar.gz
Algorithm Hash digest
SHA256 9cfd11488708c55db4d97ff2d7c802867e34f4e37a42faa2ba1a8b62355c6140
MD5 346e4d225359ce2dac4aa081acb042e8
BLAKE2b-256 fac20c6cfa86895c8cbf558b2942c8cd6e6f748eb6e0a0627e5c1fdbe17cae36

See more details on using hashes here.

File details

Details for the file PyTlin-1.2-py3-none-any.whl.

File metadata

  • Download URL: PyTlin-1.2-py3-none-any.whl
  • Upload date:
  • Size: 3.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for PyTlin-1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a85502cb32f9f594d59376a4f7912a9e6a0576c4f7632ec55b38b46d4acb253b
MD5 e1c965f191e1b9b728f9f9de66985ebf
BLAKE2b-256 48167c7ce59bcc3b2d4689b96eed0ecad8a493c78c34aa2ff376d3b0a7b9d0c4

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.2

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page