首先,这个问题并非100%特定于Haskell,请随意评论类型类,接口和类型的一般设计.
我正在阅读LYAH - 创建类型和类型类以下是我正在寻找更多信息的段落:
Data (Ord k) => Map k v = ...
Run Code Online (Sandbox Code Playgroud)
但是,在Haskell中,永远不要在数据声明中添加类型类约束.为什么?好吧,因为我们没有受益很多,但我们最终写了更多的类约束,即使我们不需要它们.如果我们将或者不将Ord k约束放在Map kv的数据声明中,我们将不得不将约束放入假定可以对地图中的键进行排序的函数中.但是如果我们不将约束放在数据声明中,我们就不必在函数的类型声明中放入(Ord k)=>,而不关心是否可以对键进行排序.这样一个函数的一个例子是toList,它只需要一个映射并将其转换为一个关联列表.它的类型签名是toList :: Map ka - > [(k,a)].如果Map kv在其数据声明中有一个类型约束,则toList的类型必须是toList ::(Ord k)=> Map ka - > [(k,a)],即使该函数不执行任何操作按顺序比较键.
首先,这似乎是合乎逻辑的 - 但是将类型类附加到类型上并没有好处吗?如果类型类型是类型的行为,那么为什么要通过使用类型(通过函数)来定义行为,而不是类型本身?我假设有一些元编程可以使用它,它肯定是很好的描述性代码文档.相反,这在其他语言中是一个好主意吗?指定对象应该在方法上遵循的接口是否理想,如果调用者不使用该方法,则对象不必符合接口?而且,为什么Haskell不能推断使用类型的函数Foo,必须引入类型Foo声明中标识的类型约束?是否有一个pragma来启用它?
我第一次看到它时,就会形成"这是一种黑客攻击(或解决方法)".在第二次阅读时有些想法,听起来很聪明.在第三次阅读时,对OO世界进行了一次计算,这听起来像是一次黑客攻击.
所以我在这里.
我在Visual Studio 2010中编写C语言.编译器似乎不想让我使用内联变量声明.以下代码生成错误:
unsigned int fibonacci_iterative(unsigned int n) {
if (n == 0) {
return 0;
}
if (n == 1) {
return 1;
}
unsigned int prev_prev = 0; // error
unsigned int prev = 1; // error
unsigned int next = 0; // error
for (int term_number = 0; term_number < n; term_number++) {
unsigned int temp = prev_prev + prev;
prev = next;
prev_prev = prev;
next = temp;
}
return next;
}
Run Code Online (Sandbox Code Playgroud)
错误:
错误C2143:语法错误:缺少';' 在'类型'之前
错误C2143:语法错误:缺少';' …
目前,在我的请求模型中,我有:
belongs_to :requestor, :class_name => 'User'
Run Code Online (Sandbox Code Playgroud)
因此请求者是current_user.
问题是当current_user单击创建按钮以提交请求的表单时,所有属性都会更新到表单中的数据库.
但由于requestor_id不是表单中填写的值,因此在创建新请求记录时会在数据库中返回null值.
我想要的是requestor_id当用户单击创建按钮时,在请求表的列中更新的整数(相当于Users表的主键).
所以我认为可能requestor_id在创建动作的参数中添加一个符号可以解决这个问题:
def create_common
@a = Request.new
b = @a.requestor_id
@resource = yield params[:contact + "#{b}".to_sym]
self.resource = @resource
Run Code Online (Sandbox Code Playgroud)
但它返回以下错误:
实习空字符串
谢谢你的任何建议.
我正在为一个客户开发一个应用程序,他将在一个董事会中向一组董事展示它以进行认真的演示.因为iPhone非常小,让他在实际设备上演示应用程序是没有意义的,因为没有人会看到任何东西.
是否可以在计算机或电视上输出屏幕,以便房间里的每个人都能看到正在发生的事情?
我需要在此C代码中访问数学函数需要什么包含语句?
unsigned int fibonacci_closed(unsigned int n) {
double term_number = (double) n;
double golden_ratio = (1 + sqrt(5)) / 2;
double numerator = pow(golden_ratio, term_number);
return round(numerator/sqrt(5));
}
Run Code Online (Sandbox Code Playgroud)
我试过#include <math.h>但似乎没有这样做.
我正在使用Visual Studio 2010(Windows 7).这是错误:
1>ClCompile:
1> fibonacci_closed.c
1>c:\users\odp\documents\visual studio 2010\projects\fibonacci\fibonacci\fibonacci_closed.c(7): warning C4013: 'round' undefined; assuming extern returning int
1>fibonacci_closed.obj : error LNK2019: unresolved external symbol _round referenced in function _fibonacci_closed
Run Code Online (Sandbox Code Playgroud) 在GSP中,是否可以创建与另一个GSP的直接链接?我知道我可以用:
<g:createLink controller="user" action="foo"/>
Run Code Online (Sandbox Code Playgroud)
并在UserController中定义foo动作以显示相应的GSP
class UserController {
def foo = {}
}
Run Code Online (Sandbox Code Playgroud)
但是,有什么办法可以在不创建空foo动作的情况下实现相同的结果吗?
谢谢,唐
我一直在使用提交标签帮助器.
<%= submit_tag 'Submit' %>
Run Code Online (Sandbox Code Playgroud)
我有一个名为my_image.png的图像.
如何将提交按钮设为图像?
我试过了:
<%= submit_tag '#{image_tag("Login_small.png", :width=>70)}' %>
Run Code Online (Sandbox Code Playgroud)
但这不起作用..
我想写一个专业的转售申请表.我需要知道如何设置一个有效的错误处理WinForms应用程序?
我在我的rails应用程序中添加了一些非平凡的功能,它需要在一个模块中,而不是一个自动生成的模型.我想对包含该模块的文件应该去哪里提出一些建议(目前我已经在'模型'和'视图'的同一级别添加了'代码'目录 - 但我不知道这是一个强大的选择).
我正在开发一个依赖于jQuery的javascript小部件.小部件可能会也可能不会加载到已加载jQuery的页面上.在这种情况下出现了许多问题......
如果网页没有jQuery,我必须加载自己的jQuery.然而,这样做时似乎有一个微妙的时间问题.例如,如果我的窗口小部件在jQuery完成加载和执行之前加载并执行,我会收到jQuery is not defined错误.
如果网页确实有jQuery,我通常可以使用它.但是,如果jQuery版本是旧版本,我想加载自己的版本.但是,如果我自己加载,我需要以不踩它们的$变量的方式来做.如果我设置jQuery.noConflict()并且他们的任何脚本依赖$,那么我刚刚打破了他们的页面.
如果网页使用另一个javascript库(例如原型),我也需要对原型的$变量敏感.
由于以上所有,似乎更容易不依赖于jQuery.但是在我走这条路之前,我想先重写我的小部件代码.
我的代码的基本框架,包括时序错误和有时$错误,如下:
<script type="text/javascript" charset="utf-8">
// <![CDATA
if (typeof jQuery === 'undefined') {
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = '{{ URL }}/jquery.js';
head.appendChild(script);
}
// ]]>
</script>
<script type="text/javascript" src="{{ URL }}/widget.js"></script>
Run Code Online (Sandbox Code Playgroud)
我的小部件具有以下结构:
(function($) {
var mywidget = {
init: function() {
...
}
};
$(document).ready(function() {
mywidget.init();
});
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
如果有任何指针或资源来实现可以在所有提到的环境中工作的小部件,那么他们将非常感激.