Common Lisp Blockchain - Scheme Coin

Burton Samograd burton.samograd at gmail.com
Tue Dec 19 12:22:16 UTC 2017


Patches welcome.

Burton

> On Dec 19, 2017, at 3:41 AM, David McClain <dbm at refined-audiometrics.com> wrote:
> 
> 
>> 
>>> And the conversions to octet vectors may work for strings, but not in general for arbitrary integer or float values…
>> 
>> I’m not sure what you mean there.  This code?
>> 
>> (defun to-byte-array (x)
>> (let ((retval (make-array 0 :adjustable t 
>>                           :fill-pointer t 
>>                           :element-type '(unsigned-byte 8))))
>>   (map 'nil (lambda (c) (vector-push-extend (char-code c) retval))
>>        (format nil "~A" x)) ;
>>   (coerce retval 'ironclad::simple-octet-vector)))
>> 
>> I would think the ~A in the format would give a solid textual representation for any type that has a printable expression. Am I incorrect in that?
>> 
> 
> Sorry, I might have got a bit ahead of myself there. But in general, objects that might be involved in a transaction could have values that are difficult to print. 
> 
> Take for example a structure, or a class instance. And for floating point values, the ~A is too lenient in terms of digits printed, rounding, etc. This code will also be dependent on the current value of *PRINT-BASE*, which I noticed that you permanently set to 16 along the way.
> 
> But I saw your intent, and I substituted my own network byte encoding which handles everything except compiled closures. 
> 
> - DM




More information about the pro mailing list