标签: declarative

什么声明式语言擅长分析树状数据?

我正在考虑开发一个系统来对嵌套(但树状)数据执行高度并行的查询。潜在用户是数据分析师(特别是物理学家),而不是程序员。对于用户界面,我想使用一种众所周知的查询语言来避免新语言的激增。

大多数数据的结构是这样的(想象以下数十亿event结构的模式):

event: struct
  |
  +--- timestamp: bigint
  +--- missing energy: float
  +--- tracks: array of struct
  |      |
  |      +--- momentum: float
  |      +--- theta angle: float
  |      +--- hits: array of struct
  |             |
  |             +--- detector id: int
  |             +--- charge: float
  |             +--- time: float
  |             +--- ...
  +--- showers: array of struct
         |
         +--- ...
Run Code Online (Sandbox Code Playgroud)

数据库是只读的,大多数查询是这样的:

  • θ 值在 -2.4 和 2.4 之间的点击次数最多的轨道的动量
  • 动量大于 10 GeV/c 的所有轨道上所有命中的平均电荷随时间在 0-10 ps
  • 具有最高动量的两条轨道的加权平均θ

等等。这些查询的共同点是,它们都解析为每个事件的一个标量,尽管它们会深入研究结构数组来做到这一点。它们跨这些数组的过滤、转换子集执行类似“reduce”的操作(通常fold在 Scala …

sql programming-languages declarative

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

如何在本地覆盖 Jenkinsfile 库函数?

我有一个在许多项目中使用的标准化声明性 Jenkinsfile。我已将整个管道移动到一个库中,因此我的 Jenkinsfile 如下所示:

@Library('default_jenkins_libs') _
default_pipeline();
Run Code Online (Sandbox Code Playgroud)

库(var/default_pipeline.groovy):

def call() {
pipeline {
  node { <snip> }
  stages {
    stage('Lint and style') {
      steps {
      //stuff
      }
    }
    //etc...
    stage('Post-build') {
      steps {
        PostBuildStep();
      }
    }
  }
}

def PostBuildStep() {
  echo 'Running default post-build step';
}
Run Code Online (Sandbox Code Playgroud)

我希望能够向 Jenkinsfile 中的实际管道代码添加定义,如下所示:

@Library('default_jenkins_libs') _

def PostBuildStep() {
  echo 'Running customized post-build step'
  //do custom stuff
}

default_pipeline();
Run Code Online (Sandbox Code Playgroud)

我一直无法弄清楚如何做到这一点。我怀疑这可以通过库调用 Jenkinsfile 表示的对象并调用它的“PostBuildStep()”来实现,可能像“parent.PostBuildStep()”,但我没有类结构/命名参考。

有什么建议?最重要的是,我想要一个标准化的管道,它可以通过库的更改来整体更改,但仍然可以对使用它的作业进行一些控制。

TIA

groovy declarative jenkins

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

声明式函数命名

如何命名函数以清楚地反映它们遵循声明性范式

上下文:我最近开始致力于创建以声明方式工作的库,但我很难提出反映它的命名约定。过去,我创建了名称类似于 的命令式函数createThing,但我发现很难在函数名称中简洁地传达“做必要的事情以返回Thing看起来像 ____”的想法。
理想情况下,我想遵循正式的标准或既定的命名约定。否则,我希望至少从预先存在的代码库中找到一些指导。

language-agnostic declarative naming-conventions

6
推荐指数
2
解决办法
395
查看次数

颤动:如何在将导航器与页面一起使用时处理后退按钮按下

我正在尝试实现 Navigator 2.0 方法。我唯一无法工作的是按下后退按钮。当我按下后退按钮时,应用程序只是退出而不会转到上一页。我尝试了 WillPopPage 小部件,但后退按钮绕过了它。

这是一个不适用于背压的示例代码。

import 'package:flutter/material.dart';

main(List<String> args) {
  runApp(TestApp());
}

class TestApp extends StatefulWidget {
  @override
  _TestAppState createState() => _TestAppState();
}

class _TestAppState extends State<TestApp> {
  bool go = false;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Navigator(
        pages: [
          // page 1
          MaterialPage(
            child: W1(onTapped: () {
              setState(() => go = true);
            }),
          ),
          // page 2
          if (go) MaterialPage(child: W2()),
        ],
        onPopPage: (route, result) {
          if (!route.didPop(result)) return false;
          go = false;
          return …
Run Code Online (Sandbox Code Playgroud)

declarative dart flutter flutter-navigation

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

使用声明性编程语言的技巧?

如上所述,您有任何提示可以帮助理解/理解/获取您的头脑声明性编程语言吗?

或者它只是一个案例,你要沉浸在语言和它的语法中,直到它渗透,直到你得到你获得它的黄金时刻.这不是一个真正的选择,因为我不能再连续几天将自己锁在一个房间里,在这个主题上仔细研究了六本不同的书(责任就是他们所有的)

那么,当你处理声明性语言时,任何有助于你的提示或技巧,任何传递的见解?

PS我个人会首先回答" 闭嘴并投入工作 " 的第一个答案.

背景

当我第一次开始拧代码时,我才13岁(基本上,在我的姐妹Oric-1上).

从那以后,我一直在使用许多新概念和许多不同的语言,尽我所能,我很快占上风.面向对象?没打扰.事件驱动的范例?抽我一把腌鱼,我会回来吃早餐.

猫头鹰,Mfc,ActiveX,Vb3,4,5和6,VB.Net,Pascal,Delphi,C,C++和C#.没有人阻挡我,至少不会很长时间.

然而,最近我的完美成绩已经受到了一些打击.

几个星期前,我把自己投入了Xaml,伙计们,我比游泳更沉没.

我认为我的主要问题是它是声明性的.我所有的其他编程技巧都是程序性的.我之前用MSBuild打过这个块,我可以复制一些如何让MSBuild工作的例子,但是从头开始把它放在一起就会丢失.

回到Xaml,目前我疯狂地尝试将触发器连接到属性并获得我需要的效果.

我可以尽快在这里发布我的特定Xaml问题.现在我问这个一般的"声明性编程"问题.

PS不,我实际上并不是这么自大.是的,当我第一次点击OO并且第一次编写一个事件驱动的UI(Windows 3.11上的VB3)时,我偶然发现了.

编辑

它开始沉沦了,在这个领域让我这么远的坚韧得到了回报,它只需要花费很多时间!

...我觉得我这个东西太老了...:)

programming-languages declarative

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

是否存在不是XML的语言和平台不可知的声明性GUI语言?

基本上,我正在寻找一种最不常见的分母声明式GUI语言,它非常适合用JavaScript转换为HTML/CSS,使用Python转换为wxPython,使用C#转换为WinForms ...强调最小公分母.否则,我完全清楚这几乎是不可能的.基本上,JSON用于声明性GUI而不是数据.

哦是的,真正的踢球者:没有XML.期.理想情况下,语法类似于Markdown,它看起来不像代码.

如果您不知道任何此类事情,您可以发布一些关于您认为它应该是什么样子以及您认为它应该(或可能)如何工作的想法,因为我打算自己创建一个.我只是确保我不会重新发明轮子.

language-agnostic user-interface cross-platform declarative

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

声明性语言的实现细节本身是否必要

我正在阅读Tomas Petricek和Jon Skeet的'Functional Programming',我理解声明和命令式编程之间的区别.

我想知道的是原始运算符和函数是如何实现的,是由命令式运算符和函数构造的声明性语言.

干杯

AWC

language-agnostic programming-languages functional-programming declarative imperative

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

如何将prolog解析树转换回逻辑句子

我设法为给定的句子构建了解析树,这里的句子是:"那个人回家了."

T = s(np(det(the), n(man)), vp(v(went), np(n(home))))
Run Code Online (Sandbox Code Playgroud)

1)如何使用短语/ 2?

如何使用prolog翻译逻辑语言中的句子? - 类似于我的需要,但它的解决方案对我不起作用.

2)我想用语法模式映射它并得到单词标签. Det=the,N(Subject)=man,V=went,N(Object)=home

有没有办法用给定的树集结构映射这个树并识别语法.如何使用解析树来识别主语,动词,宾语,语法模式以及生成目标语言句子.


稍后编辑..我试过这个代码,它给出了相当大的答案.对此代码的任何建议.

sent("(s(np(n(man))) (vp(v(went)) (np(n(home)))))").

whitespace --> [X], { char_type(X, white) ; char_type(X, space) }, whitespace.
whitespace --> [].

char(C) --> [C], { char_type(C, graph), \+ memberchk(C, "()") }.

chars([C|Rest]) --> char(C), chars(Rest).
chars([C]) --> char(C).

term(T) --> chars(C), { atom_chars(T, C) }.
term(L) --> list(L).

list(T) --> "(", terms(T), ")".

terms([]) --> [].
terms([T|Terms]) --> term(T), whitespace, !, terms(Terms). …
Run Code Online (Sandbox Code Playgroud)

parsing declarative prolog dcg

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

决定(在Haskell中)数字是否是不使用列表的回文

我需要检查Haskell,如果一个四位数是一个回文,问题是我不能使用列表,尽管有一个固定的数字,我应该使用递归.我一直在想这个问题,我无法使用递归获得解决方案.我能得到的最接近的是:

pldrm :: Integer -> Bool
pldrm x
    |x > 9999 = False
    |x > 999 = (div x 1000 == mod x 10) && (mod (div x 100) 10) == div (mod x 100) 10
    |otherwise = False
Run Code Online (Sandbox Code Playgroud)

你有什么主意吗?谢谢

haskell list declarative palindrome

5
推荐指数
3
解决办法
2137
查看次数

以声明式处理pandas数据

我有一个大熊猫的车辆坐标数据框(多天来自多辆车).对于每辆车和每天,我做两件事:要么对它应用算法,要么如果它不满足某些标准则完全从数据集中过滤掉它.

为了实现这一点,我使用df.groupby('vehicle_id', 'day')和然后.apply(algorithm).filter(condition) 在哪里,algorithm并且condition是接收数据帧的函数.

我希望我的数据集(涉及多个.apply.filter步骤)的完整处理以一种声明的方式写出来,而不是强制循环遍历这些组,整个目标看起来像:

df.group_by('vehicle_id', 'day').apply(algorithm1).filter(condition1).apply(algorithm2).filter(condition2)

当然,上面的代码是不正确的,因为.apply().filter()返回新的数据帧,这正是我的问题.他们将所有数据返回到一个数据帧中,我发现我已经.groupby('vehicle_id', 'day')连续申请了.

有没有一种很好的方式可以写出来,而不必一遍又一遍地按相同的列分组?

declarative dataframe pandas

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