我知道在Haskell中newtype经常被比较data,但我从更多的设计观点而不是技术问题中提出这种比较.
在不完全/ OO语言中,存在反模式" 原始的痴迷 ",其中原始类型的大量使用降低了程序的类型安全性并且引入了相同类型值的意外互换性,否则用于不同目的.例如,很多东西都可以是String,但如果编译器可以静态地知道我们的名字是什么以及我们想要成为地址中的城市,那将会很好.
那么,Haskell程序员用多长时间newtype来对其他原始值进行类型区分呢?使用type引入别名并为程序的可读性提供更清晰的语义,但不会阻止意外地交换值.当我学习haskell时,我注意到类型系统和我遇到的任何类型系统一样强大.因此,我认为这是一种自然而普遍的做法,但我没有看到太多或任何有关使用的讨论newtype.
当然,很多程序员都会以不同的方式做事,但这在haskell中是否常见?
我有一种情况,我想在没有类的项目中执行javadoc.它只有一个包的package-info.java.执行javadoc时,会出现以下错误:
An error has occurred in JavaDocs report generation:Exit code: 1 - javadoc: error - No public or protected classes found to document.
Run Code Online (Sandbox Code Playgroud)
有没有办法强迫它只处理package-info.java(除了显而易见的hacky解决方案:创建一个虚拟类,脚本复制package.html等)?
我正在执行javadoc作为maven构建的一部分,所以maven-javadoc-plugin正在执行实际的javadoc命令.
我正在尝试使用django-pipeline-1.1.27和s3boto来压缩和过滤静态文件,然后将它们上传到s3存储桶.如果我只是使用:
PIPELINE_STORAGE = 'pipeline.storage.PipelineFinderStorage'
Run Code Online (Sandbox Code Playgroud)
然后它工作,我得到一个静态文件夹,其中包含我配置的漂亮版本文件.我一切换到
PIPELINE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
Run Code Online (Sandbox Code Playgroud)
我明白了
Traceback (most recent call last):
File "manage.py", line 15, in <module>
execute_manager(settings)
File "/my/virtual/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 438, in execute_manager
utility.execute()
File "/my/virtual/env/lib/python2.7/site-packages/django/core/management/__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/my/virtual/env/lib/python2.7/site-packages/django/core/management/base.py", line 191, in run_from_argv
self.execute(*args, **options.__dict__)
File "/my/virtual/env/lib/python2.7/site-packages/django/core/management/base.py", line 220, in execute
output = self.handle(*args, **options)
File "/my/virtual/env/lib/python2.7/site-packages/pipeline/management/commands/synccompress.py", line 39, in handle
packager.pack_stylesheets(package, sync=sync, force=force)
File "/my/virtual/env/lib/python2.7/site-packages/pipeline/packager.py", line 52, in pack_stylesheets
**kwargs)
File "/my/virtual/env/lib/python2.7/site-packages/pipeline/packager.py", line 60, in pack
package['output'], package['paths'])
File "/my/virtual/env/lib/python2.7/site-packages/pipeline/versioning/__init__.py", line …Run Code Online (Sandbox Code Playgroud)