相关疑难解决方法(0)

功能规划的分析与设计

当您计划使用像Haskell这样的函数式编程语言开发系统时,如何处理分析和设计阶段?

我的背景是命令式/面向对象的编程语言,因此,我习惯使用案例分析和使用UML来记录程序的设计.但事实是,UML本质上与面向对象的软件方式有关.

我很感兴趣的是,为将要使用函数式编程开发的系统开发文档和定义软件设计的最佳方法是什么.

  • 您是否仍会使用用例分析结构化分析和设计
  • 软件架构师如何定义系统的高级设计,以便开发人员遵循它?
  • 当您应该展示解决方案的设计时,您向客户或新开发人员展示了什么?
  • 如何在不首先编写所有内容的情况下记录整个图片?
  • 在功能世界中有没有可与UML相媲美的东西?

haskell functional-programming analysis software-design purely-functional

8
推荐指数
1
解决办法
1605
查看次数

重复调用函数的功能?

考虑假设函数repeatcall,它将参数作为无参数可调用func和正整数n,并返回一个列表,其成员是通过执行func() n次数获得的.它支持无限的愚蠢的hijinks流,如:

>>> repeatcall(lambda: id(dict()), 5)
[45789920, 45788064, 45807216, 45634816, 45798640]

>>> urandom = lambda: struct.unpack('Q', open('/dev/urandom').read(8))[0]
>>> repeatcall(urandom, 3)
[3199039843823449742, 14990726001693341311L, 11583468019313082272L]

>>> class Counter(itertools.count): __call__ = itertools.count.next
>>> repeatcall(Counter(100, -2), 4)
[100, 98, 96, 94]
Run Code Online (Sandbox Code Playgroud)

我可以发誓,我已经repeatcall在Python 2.x标准库中看到过像某个函数,但我找不到它.如果我没有梦想这个,我可以在标准库中找到它吗?

PS:我知道推出自己的产品是微不足道的,但我讨厌重新发明轮子,特别是那些已经在标准库中的轮子.我不是在问自己怎么样.

编辑:让我更明确的是我不会问如何编码repeatcall.

python iteration iterator

6
推荐指数
1
解决办法
3897
查看次数

使用'pip |部署Python软件包的任何方法 easyinstall'+'* .pyc only'+'flat名称空间包装'+ virtualenv?

目标:

  • 利用现代的Python打包工具集将专有程序包部署/安装到某些virtualenv中。
  • 安装的软件包应仅包含已编译的* .pyc(或* .pyo),而不包含源文件。
  • 有几个软件包,并且使用供应商名称(此处为Studio 选择dgmx)作为软件包名称。因此,安装的软件包将类似于dgmx / alucarddgmx / bansheedgmx / carmilla,...
  • 已安装软件包的文件层次结构应类似于python setup.py install --single-version-externally-managedpip install。请参阅为什么我无法通过手动* python setup.py install *获得准确的结果到* pip install *?

简短的问题:

我喜欢仅通过已编译的* .pyc(或* .pyo)文件将专有的命名空间包部署到virtualenv中,其中文件/目录层次结构只是通过许多ooxx.egg路径污染sys.path来反映名称空间。

我尝试过的东西:

  1. python setup.py bdist_egg --exclude-source-files然后easy_install ooxx.egg
    • 为每个名称空间包污染“ sys.path”。
  2. python setup.py install --single-version-externally-managed
    • 不只是* .pyc。
    • “ install_requires”被忽略了!
    • 需要手动放置ooxx.egg-info / installed-files.txt才能使卸载正常进行。
  3. pip install . 在“ setup.py”的位置。
    • 不只是* .pyc。 …

python packaging setuptools virtualenv

5
推荐指数
1
解决办法
1923
查看次数