在尝试解决涉及重新实现评估的4Clojure问题" 通用计算引擎 "时,我意外地结束了这样的事情:
(apply '/ '(16 8))
Run Code Online (Sandbox Code Playgroud)
而不是预期的:
(apply / '(16 8))
Run Code Online (Sandbox Code Playgroud)
这有一个令人困惑的返回副作用8,这让我觉得我搞砸了我的数学.
我稍后在一些调试后意识到我的错误 - 我/在尝试调用它之前未能评估符号 - 因此意识到clojure.lang.Symbol必须实现clojure.lang.IFn.但是那个实现有什么作用呢?我能做的就是nil用一个参数返回,如果给出则返回第二个参数.
在OCaml中使用相互递归的模块定义时,即使在.ml文件中也必须提供签名.这是一个烦恼,我也希望从中公开给定的接口.mli,因为我最终重复签名两次.:(!
module rec Client : sig
type ('serv,'cli) t
(* functions ... *)
end = struct
type ('serv,'cli) t =
{ server: ('serv,'cli) Server.t
; (* other members ... *)
}
end
and Server : sig
type ('serv,'cli) t
(* functions ... *)
end = struct
type ('serv,'cli) t =
{ mutable clients: ('serv,'cli) Client.t list
; mutable state: 'serv
}
(* functions again ... *)
end
Run Code Online (Sandbox Code Playgroud)
这是我正在做的粗略近似(Client类型对象知道Server实例化它们Server.s知道它们的Clients). …
假设我在net.aserve和之上构建了一个应用程序bordeaux-threads.我的包声明可能如下所示:
(defpackage :my-package
(:use :cl :net.aserve :bordeaux-threads)
(:export …))
Run Code Online (Sandbox Code Playgroud)
我使用Quicklisp,所以(ql:quickload "aserve") (ql:quickload "bordeaux-threads")在编译我的包之前我在SLIME中运行,一切都很好.
当然,明天我再次启动SLIME,我必须记得QUICKLOAD在编译之前发出s,否则我就麻烦了.
我可以把类似的东西
(eval-when (:compile-toplevel)
(ql:quickload "aserve")
(ql:quickload "bordeaux-threads"))
Run Code Online (Sandbox Code Playgroud)
在我的软件包的顶部 - 这是我为开发所做的 - 但我觉得强制一个包管理器对用户来说不是一个好主意.
还有更好的选择吗?
将参数哈希包装到嵌套哈希中.这将允许客户端提交POST请求,而无需指定任何根元素.
它有助于省略包装哪些参数哈希.该动作控制器概述指南给出了这样的破败:
Rails收集与
params散列中的请求一起发送的所有参数,无论它们是作为查询字符串还是帖子正文的一部分发送.[...]query_parameters哈希包含作为查询字符串的一部分发送的参数,而request_parameters哈希包含作为帖子正文的一部分发送的参数.所述path_parameters散列包含由所述路由为导致该特定控制器和动作路径的一部分可识别的参数.
当您使用RESTful资源和路由时,会发生这种乐趣.假设你有一个模型A has_many Bs; 因此B具有外键a_id.
你POST /as/1/bs有一个空的有效负载(因为B没有其他字段).假设a_id是attr_accessible,人们可能会认为a_id它将被包裹在一个b对象中.相反,你会看到:
Processing by BsController#create as HTML
Parameters: {"b"=>{}, "a_id" => "1"}
Run Code Online (Sandbox Code Playgroud)
没有这样的运气.事实证明,ParamsWrapper使用request_parameters和不使用params,因此不包括a_idPOST有效负载意味着它不会被包装.这是非常令人困惑的,因为你仍然看到它包含在内params,因为URI通配,并想知道为什么它被排除在所有东西之外.
有没有什么好的理由可以使用request_parameters而不是params在这里?
我可以理解,从"REST哲学"的角度来看,如果我们假设有效载荷包含整个对象,它就更纯粹了,但这实际上意味着a_idURI中的内容被完全忽略,这似乎很可惜.
TL; DR: ParamsWrapper使用request_parameters作为参数源,所以URI-匹配替换的变量被跳过.这是一个Rails错误吗?纯REST倡导者可能会说不,但实用主义暗示是.
我试图永远重复一个IO动作,但是将一个执行的结果输入到下一个.像这样的东西:
-- poorly named
iterateM :: Monad m => (a -> m a) -> a -> m b
iterateM f a = f a >>= iterateM f
Run Code Online (Sandbox Code Playgroud)
Hoogle似乎并没有帮助我,但是我看到很多功能看起来非常接近我想要的功能,但似乎没有一个功能完全正确.
我正在关注算子,应用函子...我不知道如何到达我想要的地方,但我觉得遵循这些类型应该让我更接近.
是否有一种简单的方法可以制作map仅适用于2元组的第一个元素的-alike?以first从Control.Arrow和使用Arrow (->),该做的伎俩很好:
map . first :: (b -> c) -> [(b, d)] -> [(c, d)]
Run Code Online (Sandbox Code Playgroud)
我唯一担心的是我还没有获得真正的箭头直觉,所以如果我坚持下去的话,我迟早会发现自己处于深水中.此外,这似乎是一个相当方便的案例,不能一概而论.
我可以通过使用仿函数,monad或其他任何东西来获得相同的功能,同时了解我想要的内容吗?我一直在玩弄
\f -> map (f `on` fst)
Run Code Online (Sandbox Code Playgroud)
类似的想法,但不能完全到达那里.
我试图在Data.Map.Map上实现Functor fmap,但是我收到了一个错误.我确信我不需要将Map转换为List以及从列表转换为了使其工作,但这是迄今为止我提出的最好的.
class Functor' f where
fmap' :: (a -> b) -> f a -> f b
instance Functor' (Map.Map k) where
fmap' f m
| Map.null m = Map.empty
| otherwise = let x:xs = Map.toList m
mtail = Map.fromList xs
a = fst x
b = snd x
in Map.insert a (f b) (fmap f mtail)
Run Code Online (Sandbox Code Playgroud)
错误:
No instance for (Ord k)
arising from a use of `Map.fromList'
In the expression: Map.fromList xs
In an equation for `mtail': …Run Code Online (Sandbox Code Playgroud) 我正在用Java制作Android的gomoku游戏.
我在活动的顶部创建了一个记分牌,Button在底部创建了一个新游戏.
在中心,我创建了100 ImageView秒(10行和10列)TableLayout.它在平板电脑上工作得很好,但在手机中 - 特别是在较小的手机中 - ImageView它们太小了,你无法完美地触摸你想要的东西.
我想实现缩放功能.它可以是多点触控变焦,或者ZoomControl Button,我唯一需要的就是工作.所以我想放大并缩小TableLayout,但记分牌和新游戏Button都没有做任何事情.
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableLayout1"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical" >
<TableRow
android:id="@+id/tableRowE"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="5dip"
android:paddingRight="5dip"
android:paddingTop="5dip"
android:paddingBottom="10dip"
android:gravity="center" >
<TextView
android:id="@+id/twScoreboard"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/result"
android:textSize="20sp"
android:layout_span="10"
android:gravity="center"
/>
</TableRow>
<TableRow
android:id="@+id/tableRow0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="5dip"
android:paddingLeft="5dip"
android:gravity="center" >
<ImageView
android:id="@+id/ImageView1"
android:layout_width="32dp"
android:layout_height="32dp"
android:src="@drawable/empty"
android:textSize="20sp" />
<ImageView
android:id="@+id/ImageView2"
android:layout_width="32dp"
android:layout_height="32dp"
android:src="@drawable/empty" …Run Code Online (Sandbox Code Playgroud) 在正则表达式中,我知道何时使用\来表示空格,但是,在下面的情况下,它们会不同:
非常感谢,如果你能向我解释一下.
我对红宝石以及宝石制作都非常陌生.我制作了一个简单的宝石,根据输入,webscrapes一些信息.但是,要使用我的gem我需要进入解释器(irb)并需要我的gem然后使用一些参数调用该方法.
假设调用了gem foo.假设调用该方法print_website(x) # where x is a string.
我希望能够做到这样的事情:
$ foo test.com
Run Code Online (Sandbox Code Playgroud)
它应该自动调用该方法并执行它.
提前致谢!如果我不清楚,请问我澄清一下!:d