未装箱的类型,比如Int#,和严格的功能,f (!x) = ...是不同的,但我看到概念上的相似性 - 他们在某种程度上不允许暴力/懒惰.如果Haskell是像Ocaml这样的严格语言,那么每个函数都是严格的,并且每个类型都是未装箱的.unboxed类型与强制执行之间的关系是什么?
您见过的最奇怪/最复杂/最令人惊讶/深度隐藏的软件漏洞或攻击是什么?在代码中你认为没有隐藏的危险,但错了?
[澄清:每个人都知道SQL注入,XSS或缓冲区溢出 - 通常由粗心编码引起的错误.但事情像肯·汤普森隐藏的木马(反思信任信托:http://cm.bell-labs.com/who/ken/trust.html),最近在Linux内核(NULL解除引用漏洞HTTP://isc.sans. org/diary.html?storyid = 6820),或使用拒绝服务对RNG进行复杂攻击(http://news.ycombinator.com/item?id=639976)让我非常不安.
更新:感谢大家的回答,他们很棒.我很难做出选择.最终,我决定将赏金奖励给侧通道/电源监控攻击.然而,你所有的答案结合起来表明我必须更多地了解安全性,因为它是一个非常深刻的主题:).
可以具有以下多态函数
let id x = x;;
let compose f g x = f (g x);;
let rec fix f = f (fix f);; (*laziness aside*)
Run Code Online (Sandbox Code Playgroud)
是为类型/类型构造函数或模块/仿函数编写的?我试过了
type 'x id = Id of 'x;;
type 'f 'g 'x compose = Compose of ('f ('g 'x));;
type 'f fix = Fix of ('f (Fix 'f));;
Run Code Online (Sandbox Code Playgroud)
对于类型但它不起作用.
这是类型的Haskell版本:
data Id x = Id x
data Compose f g x = Compose (f (g x))
data Fix f = Fix (f (Fix f))
-- …Run Code Online (Sandbox Code Playgroud) 多态种类是Haskell类型系统的扩展,由UHC 支持,允许
data A x y = A (y x)
Run Code Online (Sandbox Code Playgroud)
被打字(kinded?)as a -> (a -> *) -> *.它们对什么有用?
的Functor类包含一个隐藏的第二构件:
class Functor f where
fmap :: (a -> b) -> f a -> f b
(GHC.Base.<$) :: a -> f b -> f a
Run Code Online (Sandbox Code Playgroud)
文档:
用相同的值替换输入中的所有位置.默认定义是
fmap . const,但可以使用更高效的版本覆盖它.
我想知道更多.为什么这个fmap . const成语是一个单独的成员?替代实施如何更有效?这个组合器的应用是什么?
州monad"界面"
class MonadState s m where
get :: m s
put :: s -> m ()
Run Code Online (Sandbox Code Playgroud)
(+ return和bind)允许使用State monad构造任何可能的计算而不使用State构造函数.例如,State $ \s -> (s+1, s-1)可以写成
do s <- get
put (s-1)
return (s+1)
Run Code Online (Sandbox Code Playgroud)
相若方式,我从来没有使用Reader构造函数,因为我可以通过创建一个计算ask,return和(>>=).准确地说:Reader f == ask >>= return . f.
对于continuation来说是否同样如此 - 是否可以编写所有Cont r a使用的实例callCC(唯一的函数MonadCont),返回和绑定,并且永远不要输入类似的东西Cont (\c -> ...)?
在这个宣言中
data Const a = Const Integer
Run Code Online (Sandbox Code Playgroud)
Haskell推断出的Const是* -> *.是否可以改为Const采用类型构造函数,所以它会是(* -> *) -> *?理想情况下,它应该是a -> *,但没有多态类型.此线程显示一个解决方案 - 添加未使用的构造函数 自2002年以来情况发生了变化吗?
分布式计算和线程有多相似?我发现有两篇论文得出了相反的结论:
"多线程比网络更容易.线程如何简单,类似于网络代码"
http://software.intel.com/file/14723
(这给我的印象是它们非常相似,在封装后这两种方法可以使用相同的代码完成 - 但也许我错了)
"关于分布式计算的说明"
http://research.sun.com/techrep/1994/abstract-29.html
(这有很大的区别)
我确信事实介于两者之间.什么是中庸之道?有没有技术可以统一这两种范式?或者由于网络和并发之间的根本区别,这些尝试失败了吗?
我正在尝试使用System.DirectoryServices.AccountManagment确定用户是否是给定组的成员.
我可以实例化PrincipalContext如下:
PrincipalContext pc = new PrincipalContext(ContextType.Domain)
接下来,我试着抓住一个校长:
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain))
{
GroupPrincipal group = GroupPrincipal.FindByIdentity(pc, "MYDOMAIN\somegroup");
// snip: exception thrown by line above.
}
Run Code Online (Sandbox Code Playgroud)
以上和UserPrincipal.FindByIdentity用户SAM都抛出DirectoryServicesCOMException:"登录失败:未知用户名或密码错误"
我已经尝试将完整的SAMAccountName传递给FindByIdentity(以MYDOMAIN \用户名的形式)或只是用户名而行为没有变化.我已尝试使用其他凭据HostingEnvironment.Impersonate和SPSecurity.RunWithElevatedPrivileges方法执行代码,并且也会遇到相同的结果.
我还尝试使用域名实例化我的上下文:
Principal Context pc = new PrincipalContext(ContextType.Domain, "MYDOMAIN");
这引发了PrincipalServerDownException:"无法联系到服务器."
我正在研究一台相当硬化的服务器.我没有锁定系统,所以我不确定它到底做了什么.如果我需要为我的池标识用户或域安全策略分配凭据以使这些凭据有效,我可以相应地配置域.是否有任何设置会阻止我的代码运行?我在代码本身中遗漏了什么吗?这在SharePoint网站中是不可能的吗?
编辑:经过进一步测试,我的代码在面向.NET 4.0的控制台应用程序中测试时正常运行.我针对不同的框架,因为在针对.NET 3.5出于某种原因我没有在控制台应用程序中使用AccountManagement.
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain))
using (UserPrincipal adUser = UserPrincipal.FindByIdentity(pc, "MYDOMAIN\joe.user"))
using (GroupPrincipal adGroup …Run Code Online (Sandbox Code Playgroud) haskell ×6
c# ×1
c#-3.0 ×1
evaluation ×1
functor ×1
monads ×1
networking ×1
ocaml ×1
polymorphism ×1
security ×1
state-monad ×1
strictness ×1
theory ×1
types ×1