From 8ebe6e1178bcda36ec401c41f663d78e3ed7c0e3 Mon Sep 17 00:00:00 2001 From: CoprDistGit Date: Mon, 15 May 2023 06:17:39 +0000 Subject: automatic import of python-oslash --- python-oslash.spec | 394 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 394 insertions(+) create mode 100644 python-oslash.spec (limited to 'python-oslash.spec') diff --git a/python-oslash.spec b/python-oslash.spec new file mode 100644 index 0000000..796b8c0 --- /dev/null +++ b/python-oslash.spec @@ -0,0 +1,394 @@ +%global _empty_manifest_terminate_build 0 +Name: python-OSlash +Version: 0.6.3 +Release: 1 +Summary: OSlash (Ø) for Python 3.8+ +License: MIT License +URL: https://github.com/dbrattli/oslash +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/60/b2/54ea4a7c6f768469a4c6a2f27f5c7cf572d63e9fd7f7618fca89c30966b3/OSlash-0.6.3.tar.gz +BuildArch: noarch + +Requires: python3-typing-extensions + +%description +# Functors, Applicatives, And Monads in Python + +![Python package](https://github.com/dbrattli/OSlash/workflows/Python%20package/badge.svg) + +OSlash (Ø) is a library for playing with functional programming in Python 3.8+. It's an attempt to re-implement some of +the code from [Learn You a Haskell for Great Good!](http://learnyouahaskell.com/) in Python 3.8. OSlash unifies +functional and object oriented paradigms by grouping related functions within classes. Objects are however never used +for storing values or mutable data, and data only lives within function closures. + +OSlash is intended to be a tutorial. For practical functional programming in Python in production environments you +should use [FSlash](https://github.com/dbrattli/fslash) instead. + +## Install + +```bash +> pip3 install oslash +``` + +The project currently contains implementations for: + +## Abstract Base Classes + +- **[Functor](https://github.com/dbrattli/OSlash/wiki/Functors,-Applicatives,-And-Monads-In-Pictures#functors)**, for stuff that can be mapped +- **[Applicative](https://github.com/dbrattli/OSlash/wiki/Functors,-Applicatives,-And-Monads-In-Pictures#applicatives)**, for callable stuff +- **Monoid**, for associative stuff +- **[Monad](https://github.com/dbrattli/OSlash/wiki/Functors,-Applicatives,-And-Monads-In-Pictures#monads)**, for monadic stuff + +## And Some Monads + +- **Identity**, boxed stuff in its simplest form +- **[Maybe (Just | Nothing)](https://github.com/dbrattli/oslash/wiki/Functors,-Applicatives,-And-Monads-In-Pictures)**, for optional stuff +- **Either (Right | Left)**, for possible failures +- **List**, purely functional list of stuff +- **[IO Action](https://github.com/dbrattli/OSlash/wiki/Functors,-Applicatives,-And-Monads-In-Pictures#io-monad)**, for impure stuff +- **[Writer](https://github.com/dbrattli/OSlash/wiki/Three-Useful-Monads#the-writer-monad)**, for logging stuff +- **[Reader](https://github.com/dbrattli/OSlash/wiki/Three-Useful-Monads#the-reader-monad)**, for callable stuff +- **State**, for stateful computations of stuff +- **Cont**, for continuation of stuff + +## Monadic functions + +- **>>**, for sequencing monadic actions +- **lift**, for mapping a function over monadic values +- **join**, for removing one level of monadic structure +- **compose**, for composing monadic functions + +## Utility functions + +- **compose**, for composing 0 to n functions + +## But why? + +Yes, I know there are other projects out there like [PyMonad](https://bitbucket.org/jason_delaat/pymonad/), +[fn.py](https://github.com/kachayev/fn.py). I'm simply doing this in order to better understand the +[book](http://learnyouahaskell.com/). It's so much easier to learn when you implement things yourself. The code may be +similar to PyMonad in structure, but is quite different in implementation. + +Why is the project called OSlash? OSlash is the Norwegian character called [Oslash](http://en.wikipedia.org/wiki/Ø). +Initially I wanted to create a project that used Ø and ø (unicode) for the project name and modules. It didn't work out +well, so I renamed it to OSlash. + +## Examples + +Haskell: + +```haskell +> fmap (+3) (Just 2) +Just 5 + +> (+3) <$> (Just 2) +Just 5 +``` + +Python: + +```python +>>> Just(2).map(lambda x: x+3) +Just 5 + +>>> (lambda x: x+3) % Just(2) +Just 5 + +``` + +IO Actions: + +```python +from oslash import put_line, get_line + +main = put_line("What is your name?") | (lambda _: + get_line() | (lambda name: + put_line("What is your age?") | (lambda _: + get_line() | (lambda age: + put_line("Hello " + name + "!") | (lambda _: + put_line("You are " + age + " years old")))))) + +if __name__ == "__main__": + main() +``` + +## Tutorials + +- [Functors, Applicatives, And Monads In Pictures](https://github.com/dbrattli/oslash/wiki/Functors,-Applicatives,-And-Monads-In-Pictures) in Python. +- [Three Useful Monads](https://github.com/dbrattli/OSlash/wiki/Three-Useful-Monads) _(in progress)_ +- [Using Either monad in Python](https://medium.com/@rnesytov/using-either-monad-in-python-b6eac698dff5) + + + + +%package -n python3-OSlash +Summary: OSlash (Ø) for Python 3.8+ +Provides: python-OSlash +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-OSlash +# Functors, Applicatives, And Monads in Python + +![Python package](https://github.com/dbrattli/OSlash/workflows/Python%20package/badge.svg) + +OSlash (Ø) is a library for playing with functional programming in Python 3.8+. It's an attempt to re-implement some of +the code from [Learn You a Haskell for Great Good!](http://learnyouahaskell.com/) in Python 3.8. OSlash unifies +functional and object oriented paradigms by grouping related functions within classes. Objects are however never used +for storing values or mutable data, and data only lives within function closures. + +OSlash is intended to be a tutorial. For practical functional programming in Python in production environments you +should use [FSlash](https://github.com/dbrattli/fslash) instead. + +## Install + +```bash +> pip3 install oslash +``` + +The project currently contains implementations for: + +## Abstract Base Classes + +- **[Functor](https://github.com/dbrattli/OSlash/wiki/Functors,-Applicatives,-And-Monads-In-Pictures#functors)**, for stuff that can be mapped +- **[Applicative](https://github.com/dbrattli/OSlash/wiki/Functors,-Applicatives,-And-Monads-In-Pictures#applicatives)**, for callable stuff +- **Monoid**, for associative stuff +- **[Monad](https://github.com/dbrattli/OSlash/wiki/Functors,-Applicatives,-And-Monads-In-Pictures#monads)**, for monadic stuff + +## And Some Monads + +- **Identity**, boxed stuff in its simplest form +- **[Maybe (Just | Nothing)](https://github.com/dbrattli/oslash/wiki/Functors,-Applicatives,-And-Monads-In-Pictures)**, for optional stuff +- **Either (Right | Left)**, for possible failures +- **List**, purely functional list of stuff +- **[IO Action](https://github.com/dbrattli/OSlash/wiki/Functors,-Applicatives,-And-Monads-In-Pictures#io-monad)**, for impure stuff +- **[Writer](https://github.com/dbrattli/OSlash/wiki/Three-Useful-Monads#the-writer-monad)**, for logging stuff +- **[Reader](https://github.com/dbrattli/OSlash/wiki/Three-Useful-Monads#the-reader-monad)**, for callable stuff +- **State**, for stateful computations of stuff +- **Cont**, for continuation of stuff + +## Monadic functions + +- **>>**, for sequencing monadic actions +- **lift**, for mapping a function over monadic values +- **join**, for removing one level of monadic structure +- **compose**, for composing monadic functions + +## Utility functions + +- **compose**, for composing 0 to n functions + +## But why? + +Yes, I know there are other projects out there like [PyMonad](https://bitbucket.org/jason_delaat/pymonad/), +[fn.py](https://github.com/kachayev/fn.py). I'm simply doing this in order to better understand the +[book](http://learnyouahaskell.com/). It's so much easier to learn when you implement things yourself. The code may be +similar to PyMonad in structure, but is quite different in implementation. + +Why is the project called OSlash? OSlash is the Norwegian character called [Oslash](http://en.wikipedia.org/wiki/Ø). +Initially I wanted to create a project that used Ø and ø (unicode) for the project name and modules. It didn't work out +well, so I renamed it to OSlash. + +## Examples + +Haskell: + +```haskell +> fmap (+3) (Just 2) +Just 5 + +> (+3) <$> (Just 2) +Just 5 +``` + +Python: + +```python +>>> Just(2).map(lambda x: x+3) +Just 5 + +>>> (lambda x: x+3) % Just(2) +Just 5 + +``` + +IO Actions: + +```python +from oslash import put_line, get_line + +main = put_line("What is your name?") | (lambda _: + get_line() | (lambda name: + put_line("What is your age?") | (lambda _: + get_line() | (lambda age: + put_line("Hello " + name + "!") | (lambda _: + put_line("You are " + age + " years old")))))) + +if __name__ == "__main__": + main() +``` + +## Tutorials + +- [Functors, Applicatives, And Monads In Pictures](https://github.com/dbrattli/oslash/wiki/Functors,-Applicatives,-And-Monads-In-Pictures) in Python. +- [Three Useful Monads](https://github.com/dbrattli/OSlash/wiki/Three-Useful-Monads) _(in progress)_ +- [Using Either monad in Python](https://medium.com/@rnesytov/using-either-monad-in-python-b6eac698dff5) + + + + +%package help +Summary: Development documents and examples for OSlash +Provides: python3-OSlash-doc +%description help +# Functors, Applicatives, And Monads in Python + +![Python package](https://github.com/dbrattli/OSlash/workflows/Python%20package/badge.svg) + +OSlash (Ø) is a library for playing with functional programming in Python 3.8+. It's an attempt to re-implement some of +the code from [Learn You a Haskell for Great Good!](http://learnyouahaskell.com/) in Python 3.8. OSlash unifies +functional and object oriented paradigms by grouping related functions within classes. Objects are however never used +for storing values or mutable data, and data only lives within function closures. + +OSlash is intended to be a tutorial. For practical functional programming in Python in production environments you +should use [FSlash](https://github.com/dbrattli/fslash) instead. + +## Install + +```bash +> pip3 install oslash +``` + +The project currently contains implementations for: + +## Abstract Base Classes + +- **[Functor](https://github.com/dbrattli/OSlash/wiki/Functors,-Applicatives,-And-Monads-In-Pictures#functors)**, for stuff that can be mapped +- **[Applicative](https://github.com/dbrattli/OSlash/wiki/Functors,-Applicatives,-And-Monads-In-Pictures#applicatives)**, for callable stuff +- **Monoid**, for associative stuff +- **[Monad](https://github.com/dbrattli/OSlash/wiki/Functors,-Applicatives,-And-Monads-In-Pictures#monads)**, for monadic stuff + +## And Some Monads + +- **Identity**, boxed stuff in its simplest form +- **[Maybe (Just | Nothing)](https://github.com/dbrattli/oslash/wiki/Functors,-Applicatives,-And-Monads-In-Pictures)**, for optional stuff +- **Either (Right | Left)**, for possible failures +- **List**, purely functional list of stuff +- **[IO Action](https://github.com/dbrattli/OSlash/wiki/Functors,-Applicatives,-And-Monads-In-Pictures#io-monad)**, for impure stuff +- **[Writer](https://github.com/dbrattli/OSlash/wiki/Three-Useful-Monads#the-writer-monad)**, for logging stuff +- **[Reader](https://github.com/dbrattli/OSlash/wiki/Three-Useful-Monads#the-reader-monad)**, for callable stuff +- **State**, for stateful computations of stuff +- **Cont**, for continuation of stuff + +## Monadic functions + +- **>>**, for sequencing monadic actions +- **lift**, for mapping a function over monadic values +- **join**, for removing one level of monadic structure +- **compose**, for composing monadic functions + +## Utility functions + +- **compose**, for composing 0 to n functions + +## But why? + +Yes, I know there are other projects out there like [PyMonad](https://bitbucket.org/jason_delaat/pymonad/), +[fn.py](https://github.com/kachayev/fn.py). I'm simply doing this in order to better understand the +[book](http://learnyouahaskell.com/). It's so much easier to learn when you implement things yourself. The code may be +similar to PyMonad in structure, but is quite different in implementation. + +Why is the project called OSlash? OSlash is the Norwegian character called [Oslash](http://en.wikipedia.org/wiki/Ø). +Initially I wanted to create a project that used Ø and ø (unicode) for the project name and modules. It didn't work out +well, so I renamed it to OSlash. + +## Examples + +Haskell: + +```haskell +> fmap (+3) (Just 2) +Just 5 + +> (+3) <$> (Just 2) +Just 5 +``` + +Python: + +```python +>>> Just(2).map(lambda x: x+3) +Just 5 + +>>> (lambda x: x+3) % Just(2) +Just 5 + +``` + +IO Actions: + +```python +from oslash import put_line, get_line + +main = put_line("What is your name?") | (lambda _: + get_line() | (lambda name: + put_line("What is your age?") | (lambda _: + get_line() | (lambda age: + put_line("Hello " + name + "!") | (lambda _: + put_line("You are " + age + " years old")))))) + +if __name__ == "__main__": + main() +``` + +## Tutorials + +- [Functors, Applicatives, And Monads In Pictures](https://github.com/dbrattli/oslash/wiki/Functors,-Applicatives,-And-Monads-In-Pictures) in Python. +- [Three Useful Monads](https://github.com/dbrattli/OSlash/wiki/Three-Useful-Monads) _(in progress)_ +- [Using Either monad in Python](https://medium.com/@rnesytov/using-either-monad-in-python-b6eac698dff5) + + + + +%prep +%autosetup -n OSlash-0.6.3 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-OSlash -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon May 15 2023 Python_Bot - 0.6.3-1 +- Package Spec generated -- cgit v1.2.3