如何简化基本算术表达式?
例如
module ExprOps where
simplify :: Expr -> Expr
simplify (Plus(Var"x") (Const 0)) = Var "x"
Run Code Online (Sandbox Code Playgroud)
我需要做什么?
module Expr where
-- Variables are named by strings, assumed to be identifiers.
type Variable = String
-- Representation of expressions.
data Expr = Const Integer
| Var Variable
| Plus Expr Expr
| Minus Expr Expr
| Mult Expr Expr
deriving (Eq, Show)
Run Code Online (Sandbox Code Playgroud)
我想到的简化是:
0*e = e*0 = 0
1*e = e*1 = 0+e = e+0 = e-0 = e
Run Code Online (Sandbox Code Playgroud)
并且简化常量子表达式,例如Plus(Const …
我的代码在一个JAR文件中运行,比如说foo.jar,我需要在代码中知道运行foo.jar的文件夹.
所以,如果foo.jar在C:\FOO\,我想要获得该路径,无论我当前的工作目录是什么.
是否有人花了几个小时才能在所有浏览器中正确呈现其应用程序的UI?
当简单的样式倾向于在一个浏览器中工作而不是其他浏览器时,你如何解决这种挫败感?当你发明黑客来处理它时(在某些情况下也不会发生),只有在浪费你的时间之后?
我将等待所有浏览器都遵循相同标准的那一天,直到那时我(和其他人)可以从经常这样做的人那里得到一些建议.
我正在寻找一些开源Java项目来进入Java,并注意到它们中有很多都有某种"常量"接口.
例如,processing.org有一个名为PConstants.java的接口,大多数其他核心类实现了这个接口.界面充满了静态成员.有这种方法的理由,还是这被认为是不好的做法?为什么不在有意义的地方使用枚举,或者使用静态类?
我发现使用接口允许某种伪"全局变量"很奇怪.
public interface PConstants {
// LOTS OF static fields...
static public final int SHINE = 31;
// emissive (by default kept black)
static public final int ER = 32;
static public final int EG = 33;
static public final int EB = 34;
// has this vertex been lit yet
static public final int BEEN_LIT = 35;
static public final int VERTEX_FIELD_COUNT = 36;
// renderers known to processing.core
static final …Run Code Online (Sandbox Code Playgroud) 我正在尝试在emacs(python-mode)中为Python文档字符串添加一个特殊标记.
目前我能够提取一行:
(font-lock-add-keywords
'python-mode
'(("\\(\"\\{3\\}\\.+\"\\{3\\}\\)"
1 font-lock-doc-face prepend)))
Run Code Online (Sandbox Code Playgroud)
这现在有效:
"""Foo"""
Run Code Online (Sandbox Code Playgroud)
但是很快就会有一个换行符:
"""
Foo
"""
Run Code Online (Sandbox Code Playgroud)
它不再起作用了.这是合乎逻辑的,因为.不包括换行符(\n).我应该使用角色类吗?
如何更正此正则表达式以包含之间的所有内容""" """?
提前致谢!
我正在为一家希望引入BPM(业务流程管理)工具的中型公司整合架构.我知道这会有所帮助,并希望介绍它,但是要在架构中找到合适的位置.
我想知道何时以及如何使用BPM工具,您如何区分业务流程与应用工作流?
我有一个包含大约100个源文件的库.如果已经编译了任何其他文件,我希望其中一个源始终重建,但我不希望每次运行make/build时都构建它.
基本上我希望这个文件内置最后的构建日期/时间,因此链接到库的任何应用程序都可以检查上一个构建时间/日期.有没有其他方法可以做到这一点?
我目前正在使用C/C++进行一些套接字编程.为了能够使用更简洁的界面和更多的OO结构,我决定围绕C套接字API的部分编写一些简单的包装类,但在这样做时我偶然发现了一个问题:
给出以下代码:
// Global method
int foo(int x)
{
return x;
}
// Class that calls the global method
class FooBar
{
public:
void foo() { return; };
void baz() { foo(1); }
};
Run Code Online (Sandbox Code Playgroud)
g ++给出以下错误消息:
test.cpp: In member function ‘void FooBar::baz()’:
test.cpp:10: error: no matching function for call to ‘FooBar::foo(int)’
test.cpp:9: note: candidates are: void FooBar::foo()
Run Code Online (Sandbox Code Playgroud)
重命名类方法可以解决问题.
为什么即使方法签名不同,也存在某种命名冲突?解决这个问题的最佳方法是什么?
谢谢/ Erik
我有一个类'数据库',作为ADO.net的包装器.例如,当我需要执行一个过程时,我调用Database.ExecuteProcedure(procedureName,parametersAndItsValues).
我们遇到了SQL Server 2000中死锁情况的严重问题.我们团队的一部分正在处理sql代码和事务以最小化这些事件,但我正在考虑使这个数据库类能够抵御死锁情况.
我们希望死锁受害者可能在经过一段时间的延迟后重试,但我不知道是否可能.这是我们使用的方法的代码:
public int ExecuteQuery(string query)
{
int rows = 0;
try
{
Command.Connection = Connection;
Command.CommandType = CommandType.Text;
if(DatabaseType != enumDatabaseType.ORACLE)
Command.CommandText = query;
else
Command.CommandText ="BEGIN " + query + " END;";
if (DatabaseType != enumDatabaseType.SQLCOMPACT)
Command.CommandTimeout = Connection.ConnectionTimeout;
if (Connection.State == ConnectionState.Closed)
Connection.Open();
rows = Command.ExecuteNonQuery();
}
catch (Exception exp)
{
//Could I add here any code to handle it?
throw new Exception(exp.Message);
}
finally
{
if (Command.Transaction == null)
{
Connection.Close();
_connection.Dispose();
_connection …Run Code Online (Sandbox Code Playgroud) 我想以编程方式验证应用程序的状态,以查看它是否已崩溃或停止.我知道如何查看进程是否存在于C#中,但我是否也可以看到它是否"没有响应"?