我有以下代码,我觉得它很难看:
loginCheck = do
ml <- getPostParam "login" -- ml and mp :: Maybe ByteString
mp <- getPostParam "password"
if isJust ml && isJust mp
then authAs (fromJust ml) (fromJust mp)
else render "Msg" [("text", "Form incomplete")]
Run Code Online (Sandbox Code Playgroud)
这段代码似乎非常迫切.我可以以某种方式简化它吗?
众所周知,统一和属性是GPU中的寄存器.我的问题是当不同的程序绑定时会发生什么?先前设置的制服和/或属性指针的标准保证是否会被重新加载,或者我是否需要手动重新加载它们?我想创建缓存系统.对我来说,当程序反弹时,属性不会重新加载(是吗?),制服怎么样?GL ES驱动程序是否为我重新加载它们的值?
我睡不着!:)
我在Haskell编写了一个构建双链表的小程序.基本语言的属性是懒惰的评估(参见下面的一堆代码).我的问题是,我可以做在同一个纯粹的功能性语言急于评估或不?在任何情况下,渴望功能语言必须具备哪些属性才能构建这样的结构(杂质?)?
import Data.List
data DLList a = DLNull |
DLNode { prev :: DLList a
, x :: a
, next :: DLList a
}
deriving (Show)
walkDLList :: (DLList a -> DLList a) -> DLList a -> [a]
walkDLList _ DLNull = []
walkDLList f n@(DLNode _ x _) = x : walkDLList f (f n)
-- Returns first and last items.
makeDLList :: [a] -> (DLList a, DLList a)
makeDLList xs …Run Code Online (Sandbox Code Playgroud) 我看到很多行import HSP.ServerPartT()- 导入列表是空的.为什么这样做?只是没有导入这个模块有什么区别?
我该怎么做(不编译):
<T> List<T> getElementsOf() {
return list.stream()
.filter(x -> x instanceof T)
.map(x -> (T) x)
.collect(toList());
}
Run Code Online (Sandbox Code Playgroud)
什么是用法的例子?理想情况下,应该是这样的obj.<Derived>getElementsOf().
我们有一个简单的结构(POD).
struct xyz
{
float x, y, z;
};
Run Code Online (Sandbox Code Playgroud)
我可以假设以下代码没问题吗?我可以假设没有任何差距吗?标准说的是什么?对于POD来说是真的吗?课程是真的吗?
xyz v;
float* p = &v.x;
p[0] = 1.0f;
p[1] = 2.0f; // Is it ok?
p[2] = 3.0f; // Is it ok?
Run Code Online (Sandbox Code Playgroud) 我知道Lua是嵌入类中最好的,但是我想使用Scheme或某些LISP方言作为C应用程序的脚本语言。要嵌入哪些好的口译员?我的标准是:
我不在乎:
现在,我考虑以下几点:
我正在学习Clojure.相当基本的任务是生成斐波纳契数列.我最终得到了必要的解决方案的副本(并且列表是相反的,呵呵):
(defn n-fib [n]
(if (= n 1) '(1)
(loop [i 2 l '(1 1)]
(if (= i n)
l
(recur (inc i) (cons (+ (fst l) (snd l)) l))))))
Run Code Online (Sandbox Code Playgroud)
什么是更好的方式,更实用,更简洁?懒惰的序列?怎么用?例如,在使用懒惰的Haskell中,我可以写一个衬垫:
fib = 1 : 1 : zipWith + (tail fib)
Run Code Online (Sandbox Code Playgroud)
请注意,Haskell解决方案提供无限序列(懒惰......).如果Clojure既有渴望也有懒惰的解决方案(即使是获得n长度列表),我想知道两者.
更新:我得到的另一个解决方案不是反转列表,而是使用堆栈生成它:
(defn n-fib [n]
(defn gen [i a b]
(if (= i 0)
()
(cons (+ a b) (gen (dec i) b (+ a b)))))
(gen n 0 1))
Run Code Online (Sandbox Code Playgroud) 通常,Clojure应用程序具有-main入口点.我正在玩Compojure:
(defroutes app-routes
(GET "/" [] handle-index)
...)
(def app
(compojure.handler/site app-routes))
Run Code Online (Sandbox Code Playgroud)
这个申请的切入点在哪里?某处环,因为要运行的命令是这样的:lein ring server-headless?在任何情况下,命名空间中入口点的功能是什么?
SQlite,Android,真实故事。我有一张表,用作缓存:
CREATE TABLE cache(key TEXT, ts TIMESTAMP, size INTEGER, data BLOB);
CREATE UNIQUE INDEX by_key ON cache(key);
CREATE INDEX by_ts ON cache(ts);
Run Code Online (Sandbox Code Playgroud)
在应用程序生命周期中,我填充了缓存,在某些时候我想清除它并删除N记录。通常,该表将包含 ~25000 个 blob,每个 blob 约为 100-500Kb,数据库中的 blob 总大小为 600-800Mb,但现在我测试了 ~2000,大约为 60Mb(以下数字适用于这种情况)。清除会删除 90% 的缓存条目。
我尝试了不同的方法来做到这一点,这里简要说明:
[1]最差也最简单。先选择,再一一移除,行走光标。慢得可怕。
[2] 使用SQLite 来做查询(删除其中包含完全N字节的blob ):
DELETE FROM blobs WHERE
ROWID IN (SELECT ROWID FROM blobs WHERE
(SELECT SUM(size) FROM blobs AS _ WHERE ts <= blobs.ts) <= N);
Run Code Online (Sandbox Code Playgroud)
这更快,但仍然非常慢:~15 秒。似乎它也具有二次复杂性。
[3]选择删除位置周围的行(使用平均 blob 大小进行计算)并使用简单WHERE子句删除:
-- …Run Code Online (Sandbox Code Playgroud)