我可以提供一个~/.sbt/repositories文件来覆盖SBT用于解析依赖关系的存储库.当文件存在时,不使用默认存储库.
SBT(0.13)中的默认存储库是什么?我想将它们添加到我的存储库文件中,这样我就可以解决网络内外的依赖关系,而无需更改/移动文件.
我们可以将没有给定约束的GADT转换为具有上述约束的GADT吗?我想这样做是因为我希望深入嵌入Arrows并使用(现在)似乎需要的表示来做一些有趣的事情Typeable.(一个原因)
data DSL a b where
Id :: DSL a a
Comp :: DSL b c -> DSL a b -> DSL a c
-- Other constructors for Arrow(Loop,Apply,etc)
data DSL2 a b where
Id2 :: (Typeable a, Typeable b) => DSL2 a a
Comp2 :: (Typeable a, Typeable b, Typeable c) => DSL2 b c -> DSL2 a b -> DSL2 a c
-- ...
Run Code Online (Sandbox Code Playgroud)
我们可以尝试以下from函数但由于我们没有Typeable递归点的信息而快速中断
from :: (Typeable a, Typeable …Run Code Online (Sandbox Code Playgroud) 我试图找到一种方法来转换正常的递归表示法,如| fib | 函数下面的箭头,保留尽可能多的递归表示法的结构.另外我想检查箭头.为此我创建了一个数据类型,其中包含每个Arrow {..}类的构造函数:
FIB:
fib 0 = 0
fib 1 = 1
fib n = fib (n-2) + fib (n-1)
Run Code Online (Sandbox Code Playgroud)
我的R数据类型,此数据类型的实例包含到相应构造函数的映射:
data R x y where
-- Category
Id :: R a a
Comp :: R b c -> R a b -> R a c
-- Arrow
Arr :: (a -> b) -> R a b
Split :: R b c -> R b' c' -> R (b,b') (c,c')
Cache :: (a -> a -> Bool) -> …Run Code Online (Sandbox Code Playgroud) 假设我必须执行以下记忆功能.(请忽略它们纯粹的事实.)
memoEq :: Eq a => (a -> b) -> a -> b
memoOrd :: Ord a => (a -> b) -> a -> b
memoHash :: Hashable a => (a -> b) -> a -> b
Run Code Online (Sandbox Code Playgroud)
现在我想要一个允许我选择上述三个备忘录函数中"最佳"的构造.基本上做以下事情的东西:
memo f = case constraint_of_typevar_a_in f of
Eq a -> memoEq
Ord a -> memoOrd
Hashable a -> memoHash
Run Code Online (Sandbox Code Playgroud)
你可以尝试使用类型类,但是你会得到重叠的实例:
class Memo a where
memo :: (a -> b) -> a -> b
instance Eq a => Memo a where
memo = …Run Code Online (Sandbox Code Playgroud) 我们使用复杂类型来管理我们的可翻译字段,如下所示:
[ComplexType]
public class Translated
{
[Required]
public string NL { get; set; }
[Required]
public string EN { get; set; }
[ScaffoldColumn(false)]
public string TranslatedText
{
get
{
return Util.Translate(NL, EN);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我们要求字段存在.但在某些情况下,整个Translated字段是可选的,如:
public class Question
{
...
[Optional(ErrorMessage="Foo")]
public Translated Description { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
但是,似乎可以计算Optional属性,当它返回false时,结果不会执行任何操作.
class OptionalAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
当我将可选属性放在非复杂类型上时,它按预期工作,错误消息将始终为Foo.
最终目标是在两种情况下允许描述为空,但是当填充其中一个字段时,错误当然应该传播.
停止验证递归会导致该字段是可选的,但是如果字段被填充,它也会阻止字段的验证.
有关如何实现这一目标的任何想法?
entity-framework customvalidator entity-framework-ctp5 entity-framework-4.1
我一直在寻找让Delphi程序与RoR服务通信的方法.我可以使用任何SOAP库,例如:ActionWebService提供SOAP服务,然后我可以在Delphi程序中使用它.
但是,这需要一次find又一次地重新实现所有ActiveRecord方法(例如).即使它们只是委托方法,这也很麻烦.
谁知道更简单/更容易/更清洁的方式?