在ubuntu中,我有一个~/.bashrc文件,其中包含许多格式的别名
alias gs='git status'
Run Code Online (Sandbox Code Playgroud)
如何在nixos中设置别名?
其他问题的答案解释了所有Agda程序都在终止.
我的理解是,任何有效的Adga程序的终止都是由Agda的高级依赖类型系统管理的要求.这个严格的要求似乎可以消除许多错误.但是,似乎禁止非终止程序会阻止语言表达一些有用的程序.例如,服务器是一种程序,其中非终止的可能性是其功能的关键方面.
是否可以在Agda中编写服务器?我认为在这种情况下,通过将服务器设置为最终终止于十亿年或其他东西,几乎可以绕过非终止限制.但我想知道是否有一些类型系统的技巧可以允许Agda表达一些这样的非终止程序,也许只有那些达到某种静态闭合循环的程序.如果没有,那么理论上可以发明这样的技巧吗?
没有这种可能性,似乎Agda概念在它可以表达的有用程序集中基本上受到限制.
我想定义一个转换为字符串的函数,如下面的'toString':
toString 1 = "1"
toString True = "True"
toString "1" = "1"
Run Code Online (Sandbox Code Playgroud)
请注意,'show'不会这样做.相比之下,它做了以下事情:
show 1 = "1"
show True = "True"
show "1" = "\"1\""
Run Code Online (Sandbox Code Playgroud)
也就是说,它会在字符串周围添加额外的引号.在这种情况下,如果我已经有一个字符串,我不想添加额外的引号.
我正在考虑使用类似的东西:
import Data.Typeable
toString a :: (Show a) => a -> String
toString a
| typeOf a == typeOf "" = a
| otherwise = show a
Run Code Online (Sandbox Code Playgroud)
做这种奇怪的基于类型的条件是否有任何陷阱?是否有一些内置的Haskell功能可以更好地使用?
我有一个看起来像这样的项目结构
请注意,“api/test”目录包含“Spec.hs”,“api”是我的项目根目录,其中包含“.cabal”和“.yaml”文件。
当我$ stack ghci从项目根(api)运行时,api/test/Spec.hs不在范围内。而我的模块在api/src/范围内。
为什么定义的模块api/test不在范围内?
我的 .cabal 文件配置正确,以便$ stack test能够成功运行api/test/Spec.hs.
我什至无法Spec.hs从 ghci 加载模块。尝试通过从 ghci 内部运行来执行此操作
> :l test/Spec.hs会出现许多“无法加载接口”错误。
如何将我的套餐从一个nixos-18.09频道更新到另一个nixos-unstable频道?我正在尝试执行此操作,因为我需要使用某些软件包的更新版本。
按照nixos 手册中的说明,我添加了nixos-unstable通道https://nixos.org/channels/nixos-unstable,删除了nixos-18.09通道https://nixos.org/channels/nixos-18.09,然后运行$ nix-channel --update和$ sudo nixos-rebuild switch --upgrade。
然而,我安装的软件包仍然是旧版本。我也试过了$ nix-env -u '*',仍然有旧版本。我还需要做什么才能将我的软件包更新到nixos-unstable版本?
我有一个quickCheck属性,它涉及为只有两个元素的和类型生成元素.
显然,对于这种情况,默认的测试用例数量100太多,因此我习惯withMaxSuccess将案例数量减少到3.这样运行得很快但由于两个原因并不理想.首先,运行的三个测试用例超过了所需的两个测试用例.其次,这三个案例并不全面,因为四分之一的机会都是三个相同的因素,而另一个则排除在外.
我已经尝试过QuickCheck的forAll修饰符,看起来它可能正在寻找我想要的东西,但运行的测试用例数仍然是100.
如果我有一个具有有限数量元素的类型作为QuickCheck测试的生成器,有没有办法设置QuickCheck通过每个元素运行一次来全面测试该属性?
要限定类型是否具有有限数量的元素,也许它可以由类Enum和Bounded类型限定.