问题列表 - 第29135页

Haskell的大规模设计?

设计/构建大型功能程序的好方法是什么,特别是在Haskell中?

我已经阅读了很多教程(自己写一个方案是我最喜欢的,真实世界Haskell紧随其后) - 但大多数程序都相对较小,而且是单一目的.另外,我不认为它们中的一些特别优雅(例如,WYAS中的大量查找表).

我现在想要编写更大的程序,包含更多移动部件 - 从各种不同来源获取数据,清理数据,以各种方式处理数据,在用户界面中显示,持久化,通过网络进行通信等.一个最好的结构,这样的代码是易读,可维护,适应不断变化的要求?

有大量文献针对大型面向对象的命令式程序解决这些问题.像MVC,设计模式等的想法是实现广泛目标的理想规定,例如在OO风格中分离关注点和可重用性.此外,较新的命令式语言适合于"随着您的成长而设计"的重构风格,在我的新手看来,Haskell似乎不太适合.

Haskell有相同的文献吗?如何在功能性编程(单子,箭头,应用等)中使用异域控制结构的动物园最好地用于此目的?你能推荐什么最佳实践?

谢谢!

编辑(这是Don Stewart回答的后续行动):

@dons提到:"Monads在类型中捕获关键的建筑设计."

我想我的问题是:如何在纯函数式语言中考虑关键的架构设计?

考虑几个数据流的示例和几个处理步骤.我可以将数据流的模块化解析器编写为一组数据结构,我可以将每个处理步骤实现为纯函数.一个数据所需的处理步骤将取决于其值和其他数据.一些步骤之后应该是GUI更新或数据库查询等副作用.

什么是以正确方式绑定数据和解析步骤的"正确"方法?人们可以编写一个大功能,为各种数据类型做正确的事情.或者可以使用monad来跟踪到目前为止已处理的内容,并让每个处理步骤从monad状态获得接下来需要的任何内容.或者可以写很多单独的程序并发送消息(我不太喜欢这个选项).

他链接的幻灯片有一个我们需要的东西子弹:"将设计映射到类型/函数/类/ monad上的成语".什么是成语?:)

monads haskell functional-programming large-scale

565
推荐指数
7
解决办法
6万
查看次数

授予单个类权限

我正在 Tomcat 6 上使用安全策略。我已成功向整个 Web 应用程序授予权限,但只想向特定类授予某些权限。但是,当我尝试这样做时,我的 doPrivileged 块收到 AccessControlException。

因为我已经成功授予了更通用的代码库,所以我回到了该代码库,并在添加每个附加子目录时进行了测试。通过这种方式,我能够提供的最具体的资助是:

grant codeBase "file:${catalina.home}/webapps/ROOT/WEB-INF/-" { ... }

如果我添加“classes/”,如下所示:

grant codeBase "file:${catalina.home}/webapps/ROOT/WEB-INF/classes/-" { ... }

然后我继续看到 AccessControlException。我试图允许的类位于类目录下。该 web 应用程序被部署为 .war 文件,并由 Tomcat 解压。

我在这里做错了什么?我打算遵循 Tomcat 提供的 catalina.policy 中提供的示例。

java security tomcat tomcat6

4
推荐指数
1
解决办法
1966
查看次数

php中从右到左的语言支持

我正在开发一个人们会用阿拉伯语发表评论的网站.我的网站是用PHP构建的.有没有人知道如何添加从右到左的语言支持以用英语写文本?

php arabic right-to-left

4
推荐指数
1
解决办法
6923
查看次数

教堂数字的补充

我坚持下一步.如果有人可以帮助我,那将是很棒的:

2 = ?fx.f(f x)
3 = ?fx.f(f(f x))
ADD = ?m n f x. m f (n f x)
Run Code Online (Sandbox Code Playgroud)

我的步骤是:

   (?m n f x. m f (n f x)) (?f x.f(f(f x))) (?f x.f(f x))
-> ((?n f x. (?f x.f(f(f x))) f (n f x))) (?f x.f(f x))
-> ((?f x. (?f' x'.f'(f'(f' x'))) f ((?f" x".f"(f" x")) f x)
Run Code Online (Sandbox Code Playgroud)

括号好吗?我真的对替换和括号感到困惑.是否有一种正式的,更容易解决此类问题的技术?

lambda-calculus church-encoding

5
推荐指数
2
解决办法
5217
查看次数

在 USB 调试打开的情况下拔掉手机是否安全?

我正在 Android 设备上使用 Eclipse 进行开发。每次我想在设备上安装新版本的应用程序时,我需要连接它,启用 USB 调试,安装应用程序,禁用 USB 调试,拔下设备(可选)。我想知道在不禁用 USB 调试的情况下拔掉设备是否安全。毕竟设备没有挂载,对吧?但是有亚行,与它交谈。能够做到这一点会方便得多。有谁知道它是安全的还是不安全的?

android

1
推荐指数
1
解决办法
1227
查看次数

保持状态时改变(添加/删除绑定)Guice注入器的最佳方法

我希望重新定义或更新模块中的一些绑定,然后由注入器使用.我意识到模块是不可变的,一旦绑定被吸入并注入其定义,就不能为所有实际目的而改变.

我想添加/更改/删除绑定,同时保持单身人士已经生活在注射器中.更改是一个简单的案例,因为可以通过使用提供程序来实现此效果.但是,动态添加或删除密钥(绑定定义)有点棘手.

任何想法,如果这应该或可以实际完成.

我认为最好的方法是每次添加/删除绑定时都重新创建一个注入器,将定义从原始复制到新的,任何现有的单例都将由toInstance重新定义,而不是实现类型等.

mutable guice

9
推荐指数
1
解决办法
4642
查看次数

真的想在C#中喜欢CodeContracts

我终于在.NET 3.5/4.0框架中添加了所有新内容.最近几天我一直在使用CodeContracts,我真的很努力喜欢它们.我很好奇其他人对C#中CodeContracts的实现有何看法?具体来说,人们如何组织诸如接口的合同类,合同不变量的合同方法等等?

我喜欢合同提供的验证,乍一看它们看起来很棒.通过一些简单的行,我可以在运行代码之前获得一些很好的构建检查.不幸的是,我很难理解代码契约在C#中实现的方式,它们使我的代码比记录合同更加混乱.为了充分利用合同,我在假设和断言等方面乱丢我的代码(我知道有些人会说这是好事); 但正如我下面的一些例子所示,它将一条简单的行转换为4或5行,并且在我看来并没有真正增加其他方法(即断言,异常等)的足够价值.

目前,我最大的挫折是:

界面合同:

[ContractClass(typeof(IInterfaceContract))]
  public interface IInterface
  {
    Object Method(Object arg);
  }

  [ContractClassFor(typeof(IInterface))]
  internal abstract class IInterfaceContract
  {
    private IInterfaceContract() { }

    Object IInterface.Method(Object arg)
    {
      Contract.Requires(arg != null);
      Contract.Ensures(Contract.Result<Object>() != null);
      return default(Object);
    }
  }
Run Code Online (Sandbox Code Playgroud)

这感觉就像这样一个cludge对我来说,我希望有一个更清洁的记录要求的方式,无论是通过属性或某种形式的内置的语言支持.我有这样的事实来实现,实现我的接口一个抽象类,只是让我可以指定合约似乎有些单调乏味的最好的.

代码膨胀:

typeof(Action<>).MakeGenericType(typeof(Object);
Run Code Online (Sandbox Code Playgroud)

需要几个假设才能验证现有的信息.我明白,所有的分析都知道的是,它是在型操作,因此必须在有限的知识工作,但它仍然让我很沮丧的是一个单一的代码行要求我重新写为

var genericAction = typeof(Action<>);

Contract.Assume(genericAction.IsGenericType);
Contract.Assume(genericAction.GetGenericArguments().Length == 1);

genericAction.MakeGenericType(typeof(Object));
Run Code Online (Sandbox Code Playgroud)

只是为了记录事情(是的,我知道我可以使用ContractVerificationAttribute来关闭方法/类等,或者使用SuppressMessageAttribbute来定位特定的消息,但这似乎打败了目的,因为你的代码很快就会被抑制等等所困扰.

另外,以案例为例

  public class MyClass
    : IInterface
  {
    private readonly Object _obj;

    public Object Property
    {
      get
      {
        Contract.Ensures(Contract.Result<Object>() != null);
        return _obj;
      }
    }

    public MyClass(Object obj) …
Run Code Online (Sandbox Code Playgroud)

c# code-contracts

59
推荐指数
3
解决办法
1万
查看次数

"user-select:none"和Firefox中的奇怪行为

我试图阻止Firefox中的一些文本突出显示,但不是页面上的所有元素.考虑以下:

<div style="-moz-user-select: none;">
I cannot be highlighted
    <div  style="-moz-user-select: text;">
    I should be highlightable, but am not.
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

据我所知,使用上面的css规则,内部div的文本应该是可突出的.然而,这似乎不起作用.实际上,没有任何文本可以突出显示.

我想知道我做错了什么?如果没有,有没有人知道这种情况的解决方法?

谢谢!

ps我应该使用备用...

-webkit-user-select: none;
Run Code Online (Sandbox Code Playgroud)

...在上面的示例中,在webkit浏览器中运行良好

javascript css formatting firefox stylesheet

8
推荐指数
1
解决办法
7284
查看次数

PHP Accessor函数和数组

在PHP中使用__set访问器函数我可以设置标量的值,但不能设置数组的元素.即:

$p->scalavar = "Hello";  // This works fine
$p->myarray['title'] = "Hello";  //This does not work
Run Code Online (Sandbox Code Playgroud)

我的访问者如下:

function __set($mbr_name, $mbr_value) {
    $this->$mbr_name = $mbr_value;
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

php

4
推荐指数
1
解决办法
835
查看次数

用于影响英语的软件

有没有可以执行以下操作的软件?

给出一个英文句子

"他喜欢烤豆",

我将"他"改为"我",句子改为

"我喜欢烤豆"

(注意S)

要么

"她的头发扎成马尾辫"

我将"她"改为"他",句子改为

"他的头发扎成马尾辫".

同样,可以将句子改为过去时态,

"她的头发扎成马尾辫".

这样的软件是否存在?

linguistics

5
推荐指数
1
解决办法
286
查看次数