一元数据结构

matts-majestic-monads的Python项目详细描述


马特斯雄伟的单子

pipeline statuscoverage report

这个夸张的库在python中实现functor、applicative和monad。

概要

可以使用Either.convertMaybe.convert作为修饰符来转换返回类型。 此示例将异常转换为左值:

frommonadsimportEither@Either.convertdefparse_arguments():parser=argparse.ArgumentParser(description='Download a URL and print it')parser.add_argument('URL',help='URL to download')returnparser.parse_args()

一旦你有了你的二者之一,你就可以使用fmapbind来操作包含的值:

result=(make_parser().fmap(parse).fmap(to_url).bind(read))

将向这些方法传递当前值。 当函数返回正常值时,应该使用fmap。 当函数返回一个monad时,使用bind

可以使用Function作为修饰符来转换函数。 一旦转换成可组合的:

frommonadsimportFunction@Functiondefparse(parser):returnparser.parse_args()@Functiondefto_url(arguments):returnarguments.URLboth=parse.compose(to_url)

示例

有一个在example.py中使用这个库的简单示例。 此脚本读取您提供的URL并打印正文的长度:

➜ pipenv run python example.py 'http://python.org/'
Right(48817)
➜ pipenv run python example.py 'http://pythonasdasd.org/'
Left(<urlopen error [Errno -2] Name or service not known>)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
未检测到“空格”的java ASCII码   音频如何在Java中设置SourceDataLine的音量   java MyBatissSpringBoot无法使用作为bean注入的数据源   Java字谜递归列表<List<String>>仅存储空列表<Strings>   java显示30px高的JPanel,然后用minecraft填充剩余空间   java JOGL平滑度   Java:按完整与否对1d对象数组进行排序   arraylist仅当java结构不存在时才将对象添加到java结构中   无法初始化java渲染库在安卓 studio 4.1.1上出现错误   java SpringBoot ClassCastException   java解析文本文件,基于字数   java=运算符引发异常   java使点可拖动并存储新坐标JavaFx   JavaWebSphereApplicationServer:EJB模块和JMS路由器