Arc Forumnew | comments | leaders | submitlogin

I started playing with Arc a few days ago, and (surprisingly) managed to get a PR approved.

I guess it's going to be my "learn a Lisp by doing" project this summer.


Ah... thanks for that note. I am working with Anarki primarily now as noted earlier for News and similar, but also didn't catch on that it was the main working model here.

Great. Just one caveat: we tend to have more experience with just Anarki (https://github.com/arclanguage/anarki) which is also using the latest Racket.

If you're thinking of https://github.com/arclanguage/arc-nu, the author hasn't been active here in a while, so you may need to ping Pauan separately.


It's about now I realize I'm using an old Arc (hence the MzScheme reference). Moving to arc-nu and Racket (as noted by Zachary) which provides all the UDP I need ;-)

I'll spend some time on this - appreciate the responses.


Thanks, Kartik!

I appreciate the info. I was actually just looking at Mu since I cloned that code for review recently. Since the framework I'll be doing this in is a testing suite, Mu may be the best model for me to follow.

Since I'm focused on UDP, Looking at comments in ac.scm in Arc, I realized MzScheme might hold the answer - there are plenty of UDP functions in those libraries.

Let me poke around a but and I'll shoot you an email if I have something to pass by you for opinion.


How about UDP calls? I sucked this CL snippet a while back (sorry I don't have the author info at hand). Creates a socket, sends data and receives data:

  (defun create-client (port buffer)
     (let ((socket (usocket:socket-connect "127.0.0.1" port
					 :protocol 
                                         :datagram
					 :element-type 
  '(unsigned-byte 8))))
    (unwind-protect
	 (progn
	   (format t "Sending data~%")
	   (replace buffer #(1 2 3 4 5 6 7 8))
	   (format t "Receiving data~%")
	   (usocket:socket-send socket buffer 8)
	   (usocket:socket-receive socket buffer 8)
	   (format t "~A~%" buffer))
      (usocket:socket-close socket))))

Appreciate it. I want to just write the code that contacts the server. Some Python pseudocode to represent the basics is below, but that just represents basic socket foo, minus the code for authentication, etc. The code would run through a list of 20+ systems and just connect one by one and log that system's local datetime. The assumption is we're doing UDP communication.

  client = socket
  host = local_system
  data = datetime_query
  remotedata = datetime_response
  target = remote_system

  client.connect (remotehost, port)
  client.send (data, target)
  remotedata.receive (remotedata, host)

  if remotedata:
	print 'Remote system date and time is:', remotedata
	else print 'No data received.'

Yeah, there's a reason why the documentation isn't linked on the right side at http://arclanguage.github.io :/

Ooh, interesting! We might want to figure out a long-term documentation system for Anarki; the existing arclanguage.github.io documentation is for Arc 3.1. And while that's great, it's suboptimal for cases like this, because it says "...there is no support for outgoing network connections." (https://arclanguage.github.io/ref/networking.html).

I just went through this exercise as well. Once you define the server, you can then query it with this code:

    arc> (load "lib/client.arc")
    arc> (cdr (mkreq "http://localhost:8080/"))

Arc is definitely not going to be able to use IOLib. If you want to find some libraries, you might be able to use some Racket libraries.

I'm not sure if you're looking to write the server component, or the code that contacts the server.

If you want to make a webpage that returns the current date and time, it's either straightforward or complicated, depending what exactly you want.

If you want a webpage that returns the current date and time _in UTC_, it's straightforward:

    arc> (thread (serve 8080))
    #<thread>
    arc> ready to serve port 8080
    arc> (defop hello req (let (sec min hour day month year) (timedate) (prn year "-" month "-" day " " hour ":" min ":" sec)))
    #<procedure: g20474>
If you want it in your local timezone, that's more complicated. You might have to pull in Racket libraries.

Thanks for the pointer to IOLib! We don't have anything like it, but there is an http client: https://github.com/arclanguage/anarki/blob/master/lib/client.... It also has unit tests, so is unlikely to have suffered bitrot.

I've built an http client several times in my life, particularly in Wart (https://github.com/akkartik/wart/blob/master/073http_get.war...) and in Mu (http://akkartik.github.io/mu/html/092socket.mu.html#L35). So I'd be happy to help if you want to try to put something together yourself.

2 points by christianbryant 3 days ago | link | parent | on: Mention of Arc on HN

Did you invite Shawn on over? He has quite a diverse language set in his GitHub projects. Even some Emacs Lisp which I have to give +1 for ;-)

I know lots of large organizations use Eggplant but this paper is a new one to me. Thanks - had to share this with my co-workers! Everyone seems enthused we share a testing tool with NASA ;-)

I work in Healthcare and we use Eggplant to test a large functional area of our Electronic Health Record (EHR). Like many automation tools, much of the success of the testing comes down to the testing team and how they develop the scripts.

I approach automated scripting design the way I approach programming an app, so I am pretty formal and diligent, I think. Hopefully I am taking lessons learned from Lisp and applying them to my work in automated testing to make the best tests I can.


Thanks for the kind words, and for the pointer to SenseTalk and Eggplant! I'd never heard of it, so I went off to correct that and ended up at this paper after a few clicks:

"Software Verification of Orion Cockpit Displays", https://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/201700...

Very interesting. Though the thought of NASA just using Python and a proprietary solution seems worrying. Maybe it's just for the test harness and other scaffolding, not code that will actually run in orbit.


It's kismet, perhaps, but I also worked on a project called Arc some 9 years ago before I found - well, Arc. It was a build tool chain written in Scheme, developed by Gregor Klinke. I was at the height of my interest in Lisp and Scheme back then, and I liked the idea of this project for potentially building a Software Configuration Management system oriented to Scheme and Lisp.

Looking back at this project with new eyes, perhaps swapping out Scheme for Arc, I wonder...

Arc build tool project http://savannah.nongnu.org/projects/arc


Also on reddit: https://www.reddit.com/r/lisp/comments/8z34az/anarki_communi....

My immediate interest is in "News". I was seeking a codebase to work from that would put me in a similar space as HN in look and function. I came across Anarki and was pleased to see it was related to Arc which I have recently been playing with.

My longterm interest is in shifting my mental focus to a more Lisp-oriented way of programming and thinking. I'm not a programmer by trade; I am a software tester and scripter, mostly. I use Python typically, but after working on an OS build I had to learn Guile and Emacs Lisp quickly. I fell in love with Lisp and Scheme due to this experience.

Arc interest came about after reading about it on Paul Graham's website. I'd worked through a portion of Practical Common Lisp by Seibel and decided to try out Arc. It felt right. Since I also happen to work in the Information Security space, I have ideas that for the most part feel like Lisp is the right language, but I will need to become more proficient. Anarki feels like a good place to start to get there from.

Side note: An an automation tester at UCLA working with SenseTalk via Eggplant, I came across Mu while researching alternatives to Eggplant in areas it fails to provide results, such as passing and receiving AIX system calls, or validating logs are being written to. Mu has caught my attention for the longterm, as well, so kudos for both Anarki and Mu.


Great to see! What's gotten you interested in it at the moment?
1 point by akkartik 23 days ago | link | parent | on: Problem with assignment

Maybe this will get too involved. Do you have experience with git, say making commits and so on?

Wanna switch to email? If you click on my username, my profile has my email address.

2 points by jsgrahamus 23 days ago | link | parent | on: Problem with assignment

Sure. Never done such before. Where are instructions for it?
1 point by akkartik 24 days ago | link | parent | on: Problem with assignment

Thanks! Wanna submit a Pull Request? ^_^

Not a big deal, I can do it too. But if it's easy you'd get to add your name to the repo :) Let me know.

2 points by jsgrahamus 24 days ago | link | parent | on: Problem with assignment

That did it.

Thanks, akkartik!

2 points by akkartik 24 days ago | link | parent | on: Problem with assignment

It sounds like we need to put quotes around the '%arc_dir%boot.rkt' in arc.cmd: https://stackoverflow.com/questions/1851012/set-a-path-varia...

Can you check if that fixes it?

2 points by jsgrahamus 24 days ago | link | parent | on: Problem with assignment

Windows 10: When I put the anarki folder in D:\, calling it worked fine.

However, when I put the folder in D:\Steve - D\Apps\, I got the following: D:\Steve - D\Apps\anarki>arc.cmd default-load-handler: cannot open module file module path: #<path:D:\Steve> path: D:\Steve system error: The system cannot find the file specified.; errid=2

I figure it has to do with spaces in the pathname, but unsure how to fix it.

2 points by akkartik 26 days ago | link | parent | on: Problem with assignment

Yes, this is a bug in Arc 3.1: http://arclanguage.org/item?id=17699 [1]

Use Anarki or Anarki's stable branch. The latter is like Arc 3.1 but with a couple of bugfixes.

More details: http://arclanguage.github.io

[1] via google: 'site:arclanguage.org string-set contract violation' :D

3 points by jsgrahamus 26 days ago | link | parent | on: Problem with assignment

Invoked by racket -f as.scm

I enjoyed watching the video and thought the speaker did a great job, but I can't say I agree with her.

When you start to have spreadsheets that require even a moderate level of analysis, tooling and refactoring then you need to move to a real programming language and environment where you get the benefits of a development eco system that establish application integrity (i.e. user access control & applied methodologies).

I've been involved in projects where companies create these MOASS apps[1] and no spreadsheet or spreadsheet tooling will solve these problems. You may not spend the 'X' months and 'X" dollars to develop the app, but your spreadsheet app will produce incorrect results often and more easily, which will cost you more in the long run (forget the fact that employees will leave which only compounds the problem).

1. Mother Of All Spread Sheets.


This video was very interesting to me: A chance to learn more about functional programming and Excel. Also the speaker was one of the most animated I have seen.
3 points by i4cu 43 days ago | link | parent | on: Arc forum GDPR compliance

After responding in this thread I ventured a little further into what GDPR would look like within the apps I am building and OMG the ability to comply could be horrendously challenging.

For example, some of my apps use Datomic, which contains both an append only log file for data storage as well as bulk storage data facilities provided by 3rd party db systems. And that doesn't even take into consideration indexes. So deleting user data would be a non-trivial exercise.

Simply put: modern day data system architectures have grown in complexity to the degree that you simply just can not push a button and remove user data anymore.

Here's some further discussion if anyone is interested.

https://www.reddit.com/r/Clojure/comments/8gfpb3/making_a_da...

P.S. I realize I'm kinda hijacking this thread, and this has nothing to do with Arc anymore, but thought that hjek might be interested (or maybe not lol).

More