commit ee0e5218a4589d7a7bdb363c20c851988dbf50ca
parent 985c6ce034bdc3f8b364fb84134e6e20a0e88856
Author: Yuval Langer <yuval.langer@gmail.com>
Date: Fri, 7 Jul 2023 14:34:13 +0300
ChatGPT will doom us all.
Diffstat:
1 file changed, 95 insertions(+), 0 deletions(-)
diff --git a/kaka.farm/call-process-chatgpt.org b/kaka.farm/call-process-chatgpt.org
@@ -118,3 +118,98 @@ We are safe...
...
for now.
+
+** I spoke too soon.
+
+https://chat.openai.com/share/08cc30e5-21ce-4549-9f3b-7de82d40f9b9
+
+Shared Chat•
+Model: Default
+Improve Lisp program.
+July 7, 2023
+can you improve this program please?
+
+(progn
+ (defun kakafarm/call-process-with-string-as-input (program &optional input-string &rest args)
+ (with-temp-buffer
+ (let ((our-output-buffer (current-buffer)))
+ (if input-string
+ (with-temp-buffer
+ (let ((our-input-buffer (current-buffer)))
+ (progn
+ (erase-buffer)
+ (insert input-string)
+ (apply 'call-process-region
+ (buffer-end -1)
+ (buffer-end 1)
+ program
+ nil
+ our-output-buffer
+ nil
+ args))))
+ (apply 'call-process
+ program
+ nil
+ our-output-buffer
+ nil
+ args)))
+ (buffer-string)))
+
+ (list (kakafarm/call-process-with-string-as-input "cat"
+ "cat says moo")
+ (kakafarm/call-process-with-string-as-input "echo"
+ nil
+ "-n"
+ "echo echo echo")))
+ChatGPT
+
+Certainly! Here's an improved version of the program:
+
+lisp
+
+(defun kakafarm/call-process-with-string-as-input (program &optional input-string &rest args)
+ (if input-string
+ (with-temp-buffer
+ (insert input-string)
+ (apply 'call-process-region (point-min) (point-max) program nil t nil args))
+ (apply 'call-process program nil t nil args)))
+
+(list (kakafarm/call-process-with-string-as-input "cat" "cat says moo")
+ (kakafarm/call-process-with-string-as-input "echo" nil "-n" "echo echo echo")))
+
+Improvements:
+
+ Removed unnecessary progn wrapper around the defun.
+ Simplified the logic for handling input strings. No need for nested with-temp-buffer calls and separate buffer variables.
+ Replaced (buffer-end -1) and (buffer-end 1) with (point-min) and (point-max) respectively for clarity.
+ Replaced (buffer-string) with t in call-process-region to discard the output buffer and avoid unnecessary memory allocation.
+ Removed unnecessary nil argument in call-process.
+
+These improvements make the code cleaner and more efficient.
+I've expected a string return value of the whole progn expression, yet
+what I've got was an insertion to this here buffer.
+ChatGPT
+
+Apologies for the misunderstanding. If you would like the whole progn expression to return a string instead of inserting it into a buffer, you can use the with-output-to-string macro. Here's the updated code:
+
+lisp
+
+(defun kakafarm/call-process-with-string-as-input (program &optional input-string &rest args)
+ (with-output-to-string
+ (if input-string
+ (with-input-from-string input-string
+ (apply 'call-process-region program nil standard-output nil args))
+ (apply 'call-process program nil standard-output nil args))))
+
+(kakafarm/call-process-with-string-as-input "cat" "cat says moo")
+
+In this version, the with-output-to-string macro captures the output of the progn expression and returns it as a string. The standard-output stream is used as the output destination for the call-process-region or call-process functions, depending on whether an input string is provided.
+
+Please note that the (kakafarm/call-process-with-string-as-input "echo" nil "-n" "echo echo echo") part from your original code has been removed since it wasn't necessary for demonstrating the changes. Feel free to add it back if needed.
+Continue this conversation
+|
+Terms of use
+|
+Privacy policy
+
+Improve Lisp program.