所以我正在深入研究XCTest的单元测试,并遇到了一些问题.
当我用内部的简写数组声明和方法调用编写XCTAssert语句时,Xcode中出现语法错误:
XCTAssert([self hasStrings:@[ @"foo", @"bar" ]]);
Run Code Online (Sandbox Code Playgroud)
在Xcode中编译错误:
Expected identifier or '('
Run Code Online (Sandbox Code Playgroud)
但是,如果我在表达式周围添加更多括号,它将起作用:
XCTAssert(([self hasStrings:@[ @"foo", @"bar" ]]));
Run Code Online (Sandbox Code Playgroud)
这是否与我的一些语法无法传递到宏有关?(假设XCTAssert是一个宏)
我正在尝试将 GADT 与 DataKinds 结合使用,如下所示
\n{-# LANGUAGE KindSignatures, DataKinds, GADTs #-}\nmodule NewGadt where\n\ndata ExprType = Var | Nest\n\ndata Expr (a :: ExprType) where\n ExprVar :: String -> Expr Var\n ExprNest :: Expr a -> Expr Nest\n\ndata BaseExpr\n = BaseExprVar String\n | BaseExprNest BaseExpr\n\ntranslate :: BaseExpr -> Expr a\ntranslate (BaseExprVar id) = ExprVar id\ntranslate (BaseExprNest expr) = ExprNest $ translate expr\nRun Code Online (Sandbox Code Playgroud)\n编译错误:
\n/home/elijah/code/monty/src/NewGadt.hs:15:32: error:\n \xe2\x80\xa2 Couldn\'t match type \xe2\x80\x98a\xe2\x80\x99 with \xe2\x80\x98\'Var\xe2\x80\x99\n \xe2\x80\x98a\xe2\x80\x99 is a rigid type variable bound …Run Code Online (Sandbox Code Playgroud)