小编Ono*_*cci的帖子

嵌套在另一个结构中的Clojure结构

是否可以将结构嵌套在Clojure中的结构中?请考虑以下代码:

(defstruct rect :height :width)
(defstruct color-rect :color (struct rect))

(defn 
#^{:doc "Echoes the details of the rect passed to it"}
echo-rect
[r]
  (println (:color r))
  (println (:height r))
  (println (:width r)))

(def first-rect (struct rect 1 2))
;(def c-rect1 (struct color-rect 249 first-rect)) ;form 1
;output "249 nil nil"
(def c-rect1 (struct color-rect 249 1 2)) ;form 2
;output "Too many arguments to struct constructor

(echo-rect c-rect1)
Run Code Online (Sandbox Code Playgroud)

当然这是一个人为的例子,但有些情况下我想将大型数据结构分解为更小的子结构,以使代码更易于维护.由于注释表明如果我形成1,我得到"249 nil nil",但如果我做表格2,我得到"结构构造函数的参数太多".

如果我以错误的方式处理这个问题,请告诉我应该做什么.搜索Clojure google小组并没有为我提供任何帮助.


编辑:

我想我在问题陈述中并不像我想象的那样清楚:

1.)是否可以在Clojure中将一个结构嵌套在另一个结构中?(从下面判断,这是肯定的.)

2.)如果是这样,那么正确的语法是什么?(同样,从下面看,看起来有几种方法可以做到这一点.)

3.)当你有一个嵌套在另一个结构中的结构时,如何通过指定的键获取值?

我想我的示例代码并没有真正展示我想要做的很好.我在这里添加这个,以便其他人搜索这个可能更容易找到这个问题及其答案.

struct nested clojure

6
推荐指数
3
解决办法
1947
查看次数

从函数返回随机值副作用?

我正在研究一些F#代码,我正在研究一个函数来从一组字符串中返回一个随机字符串.假设我有这样的事情:

open System

let a = [|"a";"b";"c";"d"|]

let rstring (arr:string[]) =
   let r = new Random()
   arr.[r.Next(0,3)]

let resultstring = rstring a;;
Run Code Online (Sandbox Code Playgroud)

我的问题是:我对函数式编程概念的理解是,如果给定的函数每次都有相同的输入,它应该总是返回相同的输出.那么在这种特殊情况下每次返回一个不同的字符串"副作用"?我只是好奇.

如果这是一个重复的问题,请指出我原来的,我会关闭它.我不确定用什么搜索字符串来查找与此相关的任何问题.


编辑:感谢大家的所有信息.我似乎把参考透明度和缺乏副作用的概念混为一谈.所以,感谢所有人让我直截了当地感谢你的答案.

f# functional-programming

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

如何永远生产凤凰

我正在尝试永远运行我的Phoenix应用程序,即独立于我的终端进程.我在Phoenix指南和Stackoverflow中看到了我可以使用的问题elixir --detached,但是我无法正确使用这些命令.事实上,我曾经能够像这样开始它,但我尝试了很多命令,我甚至不知道哪一个命令(也因为没有消息要说清楚).因此,使用最新版本的Phoenix(1.1)和Elixir(1.1.1),有哪些命令:1)永远启动服务器(作为守护进程); 2)停止服务器而无需重启服务器?

elixir phoenix-framework

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

面向开发人员的正则表达式

我一直在尝试找出一个正则表达式,以允许我在自动跳过注释的同时搜索特定字符串。有人有这样的 RE 或知道这样的 RE 吗?它甚至不需要足够复杂来跳过#if 0块;我只是想让它跳过///*阻止。相反,即仅在注释块内搜索,也将非常有用。

环境:VS 2003

c++ regex utilities visual-c++

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

一对多对自己

如何为一个可以与自身建立一对多关系的实体构建一个表?具体来说,我正在开发一个跟踪动物繁殖的应用程序.每只动物都有一个ID; 它还有一个父亲ID和一个女性ID.因此,从父系或贵妇到后代可以有一对多.我会倾向于这样的事情:

ID INT NOT NULL PRIMARY KEY
SIRE_ID INT 
DAME_ID INT
Run Code Online (Sandbox Code Playgroud)

并且为购买并添加到种畜中的那些动物记录空值,并在表格中记录其余的动物ID.

所以:

  1. 有人能指出我讨论建模这种关系的文章/网页吗?
  2. ID应该是INT还是某种字符串?INT中的NULL表示动物在数据库中没有父项,但可以使用具有特殊标志值的String来表示相同的事物.
  3. 这可能最好通过两个表格建模吗?我指的是动物的一张桌子和一张单独表格,表示亲属关系,例如:

    动物

    ID INT NOT NOT PRIMARY KEY

    亲属

    ID INT NOT NOT PRIMARY KEY FOREIGN KEY

    SIRE_ID INT PRIMARY KEY FOREIGN KEY

    DAME_ID INT PRIMARY KEY FOREIGN KEY

我为上述事件道歉:我的SQL生锈了.我希望它能传达我正在思考的东西.

database-design data-modeling table-structure

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

VB6集合删除不会触发Class_Terminate

我事先道歉;这是一个很长的问题。我已经尽力简化了,但是仍然比我所想看到的要冗长得多。

在一些旧代码中,我们有一个VB6集合。此集合通过.Add方法添加对象,并通过.Remove方法删除对象。但是,通过跟踪我可以看到,有时在调用.Remove时,似乎没有调用该对象的类终止。但这并不一致。它很少发生,我无法隔离它无法触发类终止的情况。

考虑以下演示代码:

Option Explicit
Private Const maxServants As Integer = 15
Private Const className As String = "Master"
Private Sub Class_Initialize()
    Debug.Print className & " class constructor "
    Set g_coll1 = New Collection
    Dim i As Integer
    For i = 1 To maxServants
        Dim m_servant As Servant
        Set m_servant = New Servant
        m_servant.InstanceNo = i
        g_coll1.Add Item:=m_servant, Key:=CStr(i)
        Debug.Print "Adding servant " & m_servant.InstanceNo
    Next
End Sub
Private Sub Class_Terminate()
    Dim i As Integer

    For i = maxServants To …
Run Code Online (Sandbox Code Playgroud)

vb6 collections destructor class

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

单声道的Websharper

简单的问题:是否可以在单声道上托管websharper应用程序.如果没有,有没有计划支持这样的功能?

.net f# websharper

5
推荐指数
0
解决办法
316
查看次数

F#中的预处理器指令是否缩进敏感?

FSI版本:11.0.50727.1

所以我正在研究一个F#shell脚本,我遇到了一些让我感到惊讶的事情.

当我这样做时:

#if INTERACTIVE
    #r "System.Data.dll"
    #r "FSharp.Data.TypeProviders.dll"
    #r "System.Data.Linq.dll"
#endif

open System
Run Code Online (Sandbox Code Playgroud)

当我将块粘贴到FSI中时出现FS0010错误.但如果我没有缩进行#r,没有FS0010错误.我只是惊讶于预处理器行会对缩进敏感.这是一个编译器问题还是还有其他工作在这里?

f#

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

在函数式语言中编写纯函数时如何避免不必要的计算?

我有两个函数,它们是纯函数的组合.第一个功能需要一个包裹,在其上建一个房子,然后拍照以在杂志上刊登广告:

let buildAndAdvertiseHouse parcel = 
    parcel
    |> inspect
    |> buildWalls
    |> buildRoof
    |> takePhoto
    |> advertise
Run Code Online (Sandbox Code Playgroud)

第二个功能还包括一个包裹,在它上面建一个房子,并为它添加一个画龙点睛:

let buildAndCompleteHouse parcel = 
    parcel
    |> inspect
    |> buildWalls
    |> buildRoof
    |> paintWalls
    |> addFurniture
Run Code Online (Sandbox Code Playgroud)

很明显,这两个函数也是纯粹的,因为它们是纯函数的组合.现在我有一个包裹,让我们说niceParcel,我想将两个功能应用于它.但是,我想避免前三个子函数计算两次,因为它们需要花费大量时间进行计算,并且它们在两个函数之间共享.

我如何重构我的代码,以避免这些不必要的计算,同时保留这些具有明确含义的纯函数?

.net f# functional-programming numerical-computing

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

如何使用Anko屏蔽密码?

我意识到Anko(和Kotlin)都是相当先进的,但我希望有人能够给我一点指导.当然,这对我来说只是一个学习项目.

我从代码中略微修改了以下Kotlin代码(使用Anko):

verticalLayout {
    padding = dip(30)
    val name = editText {
        hint = "Name"
        textSize = 24f
    }
    val password = editText {
        hint = "Password"
        textSize = 24f
        inputType = android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD
    }
    button("Login") {
        textSize = 26f
        onClick {
        toast("Good afternoon, ${name.text}!")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

所有东西都在构建和显示但我似乎无法获得密码editText来掩盖输入,因为我正在输入它.我错过了什么?

kotlin anko

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