Fork me on GitHub
#beginners
<
2020-03-14
>
Frank Jay01:03:05

(defn eval-not

  [input]

 (cond

(and (seq? (second input)) (= 'and (first (second input)))) ;(do x here which -> (or (not x) (not y))
))
If the user types in: (eval-not '(not (and x y))), is there a way to return (or (not x) (not y)) Without using macros and without changing the style of code I have already written above. I asked this question before, but I was not very specific as to what I was asking. I hope this question is better written.

phronmophobic01:03:27

is there any particular reason the style of the code can’t be changed?

jsn01:03:57

@U7RJTCH6J yes there is: it's a homework assignment 🙂

bananadance 2
😅 1
Frank Jay03:03:36

Well. I created the homework assignment and I did any other functions in the same format. Would appreciate any advice :)

dpsutton03:03:47

(defn demorgan
  [form]
  (cond
    (atom? form)
    form

    (and (= 'not (first form))
         (sequential? (second form))
         (= 'and (first (second form))))
    (let [[_ [_ & terms]] form]
      (list* 'or (map (comp #(list 'not %) demorgan) terms)))

    :else
    form))

dpsutton03:03:08

(demorgan '(not (and x y)))
(demorgan '(not (and (not (and x y)) z)))

Luis C. Arbildo16:03:12

Any form to express it more short and intuitive?

Luis C. Arbildo16:03:05

maybe without necessity to use the function int-or-nothing

johnj17:03:50

That if-let global is bad

Luis C. Arbildo17:03:57

Is just an example

Luis C. Arbildo17:03:12

if-let is in a function

bfabry17:03:33

probably cond-> by the looks

bfabry17:03:11

wait you only have a single condition there

Luis C. Arbildo17:03:09

yes, I just want to corroborate if this difference is greater than 0, and asign this value to a variable

bfabry17:03:10

(let [diff (- ...)]
  (when (> diff 0)
    (str diff)))

bfabry17:03:11

btw it's generally considered bad-form to use if-let and if without else branches. if you have no else branch use when and when-let

👍 2
Luis C. Arbildo17:03:43

Thank you for that!

bfabry17:03:50

no worries

jumpnbrownweasel18:03:22

@UUGUA0MGQ if you don't mind, please post text instead of images, much easier to read for me anyway. To get syntax coloring you can post a snippet with Ctrl-Shift-Enter and select Clojure for the Type.

Cora20:03:43

I might make that a ms-until function, so like (ms-until unix-time) where returning nil means it's in the past

👍 1